Select语句返回0行:不可能

时间:2017-11-13 14:52:45

标签: java sqlite

我需要快速帮助,谢谢!

我尝试使用以下代码检查数据库中是否存在成员:

public boolean memberExists(int id) {
   try {
      open();
      PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM client WHERE id = ?");
      pstmt.setInt(1,id);
      boolean _res = pstmt.executeQuery().getRow() > 0;
      close();
      return _res;
    }
    catch (SQLException e){ System.out.print(e); }
       return false;
    }
}

方法open()获取新连接,close()方法关闭连接。很简单。

让我疯狂的是它总是返回 0行。即使查询SELECT * FROM client也会返回 0行

我使用 sqlitebrowser.exe 检查我的数据库,完全相同的查询返回正确的行数

我认为我之前已经遇到过这个问题,但我不记得它究竟是什么。我觉得我错过了什么。

另外,在我的代码中,我可以 INSERT INTO 数据库,但不能 SELECT 。这真的很奇怪。

  

open()方法。

public DBConnector open() {
    boolean _exists = new File(path).exists();
    try {
        conn = DriverManager.getConnection("jdbc:sqlite:" + path);
        if (!_exists) create();
    } catch (SQLException e) {
        System.out.println(e.getMessage());
    }
    return this;
}

1 个答案:

答案 0 :(得分:1)

来自ResultSet.getRow()

  

返回:当前行号;如果没有当前行,则为0

这是当前行号,而不是结果集中的行数。

您可以通过多种方式获取行数,请参阅:

How do I get the size of a java.sql.ResultSet ?