java - 结果集代码没有被执行

标签 java mysql sql database resultset

我有以下代码来查询数据库!但是 while 循环内的代码没有被执行!没有消息框,只是不被执行!谁能帮我!结果集不为空!当我从 try catch block 中打印相同的值时,它会被执行并打印正确的值! DB连接是标准的MySQL DB连接类!

database = new DBConnection();

    String dept = txtSearch.getText();
    String Query = "SELECT * FROM department where dept_name= '" + dept + "'";

    ResultSet set = database.queryDatabase(Query);

    try {
        if (set.next() == false) {
            JOptionPane.showMessageDialog(null, "No Matchs found for the search query! Try Again.", "Search Error", JOptionPane.ERROR_MESSAGE);
        } else {
            while (set.next()) {
                System.out.print(set.getString("dept_name"));
                txtName.setText(set.getString("dept_name"));
                txtDes.setText(set.getString("dept_desc"));
            }
        }
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, ex.getMessage(), ex.getCause().toString(), JOptionPane.ERROR_MESSAGE);
    }

最佳答案

通过调用 set.next(),您将丢弃查询的第一行,然后忽略此处该行中的数据:

    if (set.next() == false) {  // ***** here on this line
        JOptionPane.showMessageDialog(null, "No Matchs found for the search query! 
            Try Again.", "Search Error", JOptionPane.ERROR_MESSAGE);
    } else {
        while (set.next()) {
            System.out.print(set.getString("dept_name"));
            txtName.setText(set.getString("dept_name"));
            txtDes.setText(set.getString("dept_desc"));
        }
    }

相反,请确保每次调用 next() 并返回 true 时都从 ResultSet 中提取信息。

你可以这样做:

int setCount = 0;
while (set.next()) {
  setCount++;
  System.out.print(set.getString("dept_name"));
  txtName.setText(set.getString("dept_name"));
  txtDes.setText(set.getString("dept_desc"));
}
if (setCount == 0) {
  // show a warning to the user that the result set was empty
}

关于java - 结果集代码没有被执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16259450/

相关文章:

java - JBehave 是否像 Jasmine 一样工作?

java - 使用 Jmeter 对消费者和生产者进行测试

mysql - 如果字符串超过 10 个单词,则添加点

MySQL查询从多行获取数据

c# - 基于时间戳计算时间跨度的 SQL 查询

java - 从 SQLite 填充联系人 ListView - 不显示联系人

java - 获取 java.lang.OutOfMemoryError : Java heap space

mysql - 导出 mysql 模式(仅数据),除了一张表

sql - 创建名称中包含当前日期的架构

sql - 在 SQL Server 中匹配街道地址的方法有哪些?