java - 从mysql行中获取数据并通过Java中的ResultSet分别显示

标签 java mysql jdbc

我有一个 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/

相关文章:

java - 我可以在 Java 中将路径映射到 Windows 物理驱动器名称吗?

java - 解析映射中带有键=值对的字符串?

php - 无法使用来自另一个 $_POST 函数的用户名将数据插入 MySql 表

mysql - 从 TomCat Web 服务访问 MySQL - 找不到合适的驱动程序

java - Spring工具套件无法连接Mysql?

Java表单搜索方法不起作用-(无法从数据库成员表中细化Member_ID)

php - 尝试在 CASE WHEN mysql php 中使用 CASE WHEN ?

Python MySQL 如果变量不存在仍然提交

sqlite - 通过 JDBC 从 Pyspark 写入 sqlite3 数据库时没有这样的表

java - 当服务器名称包含反斜杠 (localhost\TESTDATA) 时使用 JDBC