我尝试调试代码并阅读 Oracle 文档,但没有发现结果集被关闭的任何原因。
Statement statement = DatabaseConnector.connect();
String sql = "Select * from Room where Room_Type like '*"+roomType+"*' "+availability;
boolean foundResults = statement.execute(sql);
if(foundResults){
ResultSet rs = statement.getResultSet();
StringBuilder row = new StringBuilder();
if(rs!=null){
while(rs.next()){
最佳答案
回复:SQLException
我不太确定 DatabaseConnector
在问题代码中应该做什么,但以下测试代码对我有用。
RE:通配符
当在 Access 应用程序本身的查询中使用 LIKE 运算符时,则星号 *
是要使用的通配符。当从其他应用程序查询 ACE (Access) 数据库时,需要使用“标准”百分号 %
通配符。请注意,以下代码使用 %
;使用 *
在这里不起作用。
import java.sql.*;
public class JDBCQuery {
public static void main( String args[] )
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection(
"jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};" +
"Dbq=C:\\Users\\Public\\Database1.accdb;");
String RoomTypeToMatch = "suite";
PreparedStatement s = conn.prepareStatement(
"SELECT Room_No, Room_Type " +
"FROM Room WHERE Room_Type LIKE ?"
);
s.setString(1, "%" + RoomTypeToMatch + "%");
s.execute();
ResultSet rs = s.getResultSet();
if (rs!=null)
{
while (rs.next())
{
System.out.println("[Room_No]: " + rs.getString(1) +
", [Room_Type]: " + rs.getString(2));
}
}
s.close();
conn.close();
}
catch( Exception e ) {
e.printStackTrace();
}
}
}
关于java - ResultSet.next() 抛出 SQLException : Result Set Closed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16375641/