我有一个 mysql 表 user
,它由 id、name、password 和 email
列组成。
有没有办法创建某种查询或 java 代码,将在我的消息对话框窗口中打印所有用户名。
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/mydb","root","");
String sql = "select * from user;";
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(sql);
if (rs.next()) {
val1 = rs.getString(2);
val2 = rs.getString(3);
}
value = val1 + " " + val2;
JOptionPane.showMessageDialog(null,value);
}catch(SQLException e){
JOptionPane.showMessageDialog(null, e);
}
}
这只会打印表中第一个用户的名字和姓氏:(
我想将它们全部打印在另一个下面!
如果我设置 rs.getString(5); - 它给我一个错误:列索引超出范围。
最佳答案
我建议您避免使用 JOptionPane 来使用此类代码。最好使用一些框架 (Swing) 并将所有用户显示到一个单独的窗口中。
您的代码的问题是变量值位于循环之外(必须是 while 循环,正如 spencer 所说)。
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/mydb","root","");
String sql = "select * from user;";
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(sql);
while (rs.next()) {
val = rs.getString(2) + " " + rs.getString(3);
value += val + " ";
}
JOptionPane.showMessageDialog(null,value);
}catch(SQLException e){
JOptionPane.showMessageDialog(null, e);
}
尽量避免这种类型的代码,使用 ArrayList 并将所有用户凭据保存在数组中。然后在您想要的任何位置轻松标记它。
关于java - 从mysql行中获取数据并通过Java中的ResultSet分别显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23135384/