我正在使用ucanaccess工具与我的访问数据库进行交互,但我不知道如何将结果ResultSet显示或存储为字符串。
编辑:我已经尝试了= System.out.println(resultSetId.getString(1));
,但这只会返回错误。
ResultSet resultSetId;
String msAccDB = "D://Computer Science//passManager//src//Manager.accdb";
String dbURL = "jdbc:ucanaccess://" + msAccDB;
connection = DriverManager.getConnection(dbURL);
statement = connection.createStatement();
resultSetId = statement.executeQuery("SELECT ID FROM Passwords WHERE ID =
\""+identifier+"\";");
System.out.println(resultSetId.getString(1));
错误Exception in thread "main" net.ucanaccess.jdbc.Ucanaccess
在此输入代码SQLException: invalid cursor state: identifier cursor not positioned on row in UPDATE, DELETE, SET, or GET statement: ; ResultSet is positioned before first row
编辑:添加.next()修复它,谢谢!
答案 0 :(得分:0)
ResultSet位于第一行
之前
当executeQuery
返回ResultSet
时,它不指向一行数据。您需要调用resultSetId.next()
才能检索每一行。当while
预计会返回多行时,通常会在ResultSet
循环的上下文中完成,例如
while (resultSetId.next()) {
System.out.println(resultSetId.getString(1)); // print value from each row
}
但如果您只想要一行,则可以简单地调用一次,例如
if (resultSetId.next()) {
System.out.println(resultSetId.getString(1));
} else {
System.out.println("The ResultSet contained no rows.");
}