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查询的形式将如何呢?通过使用?
?