java - 结果集显示为字符串
java - ResultSet displaying as String
我正在使用 ucanaccess 工具与我的访问数据库进行交互,但我不知道如何将生成的结果集显示或存储为字符串。
编辑:我试过 =System.out.println(resultSetId.getString(1));
但只有 returns 个错误。
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() 修复了它,谢谢!
ResultSet is positioned before first row
当 executeQuery
return 是 ResultSet
时,它没有指向一行数据。您需要调用 resultSetId.next()
才能检索每一行。当 ResultSet
预计 return 多于一行时,这通常在 while
循环的上下文中完成,例如
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.");
}
我正在使用 ucanaccess 工具与我的访问数据库进行交互,但我不知道如何将生成的结果集显示或存储为字符串。
编辑:我试过 =System.out.println(resultSetId.getString(1));
但只有 returns 个错误。
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() 修复了它,谢谢!
ResultSet is positioned before first row
当 executeQuery
return 是 ResultSet
时,它没有指向一行数据。您需要调用 resultSetId.next()
才能检索每一行。当 ResultSet
预计 return 多于一行时,这通常在 while
循环的上下文中完成,例如
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.");
}