Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过resultset检索单个值,并将其与字符串值进行比较_Java_Mysql_Sql - Fatal编程技术网

Java 通过resultset检索单个值,并将其与字符串值进行比较

Java 通过resultset检索单个值,并将其与字符串值进行比较,java,mysql,sql,Java,Mysql,Sql,我有一个表,其中有一列(id,name,isbn,boundedstatus(varchar)、Date)和表中的一些行 现在,我想为特定的id获取borroedstatus值,然后我需要识别该字符串(是或否)。 这是我的密码: public void booksTableBorrowChanged(int rowInModel) { Object bookId = this.getValueAt(rowInModel, 0); Connection con; Prepa

我有一个表,其中有一列(
id
name
isbn
boundedstatus
(varchar)、
Date
)和表中的一些行

现在,我想为特定的
id
获取
borroedstatus
值,然后我需要识别该字符串(是或否)。 这是我的密码:

public void booksTableBorrowChanged(int rowInModel) {
    Object bookId = this.getValueAt(rowInModel, 0);
    Connection con;
    PreparedStatement ps1;
    String query1 = "select borrowedStatus from books where id=" + bookId;
    ResultSet rs = null;
    try {
        con = DriverManager.getConnection(...);
        ps1 = con.prepareStatement(query1);
        rs = ps1.executeQuery();
        if (String.valueOf(rs.getString("BorrowedStatus")).equalsIgnoreCase("No")) {  // then do Borrow Action
            System.out.println("Old statuse : No");

           // then do other stuff

        }

    } catch (SQLException sqle) {
        sqle.printStackTrace();
    }

}
但此代码在执行时有以下异常:

java.sql.SQLException: Before start of result set
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
...

如何解决此问题?

来自
ResultSet
的Javadoc:

ResultSet对象维护指向其当前数据行的光标。最初,光标位于第一行之前。下一个方法将光标移动到下一行,因为当ResultSet对象中没有更多行时返回false,所以可以在while循环中使用它来迭代结果集


注意以“Initially”开头的句子:在能够访问任何数据之前,首先必须调用
next

可能是您的驱动程序不支持预编译语句吗?@Mena我不能正确理解您的意思,我使用
mysql
数据库和
JDBC
驱动程序,我的程序的其他PAR与数据库工作正常。请参阅瑞的答案——我完全错过了。不要通过串连接来构建SQL查询。这就是SQL注入的方式。在这种情况下你可能是安全的,但最好永远不要这样做@ChristofferHammarström的观点很好,但是如果没有字符串连接,SQL查询的形式将如何呢?通过使用