ResultSet.next() returns false with non-empty table
ResultSet.next() returns false with non-empty table
我不太明白为什么我的代码中有 ResultSet.next() returns false
。
我正在使用 intelliJ Idea 和 oracle 数据库。我有 2 个 类:DataHandler 和 JavaClient
import java.sql.ResultSet;
import java.util.Locale;
public class JavaClient {
JavaClient() {}
public static void main(String[] args) throws Exception {
Locale.setDefault(Locale.ENGLISH);
DataHandler datahandler = new DataHandler();
ResultSet rset = datahandler.getAllStudent();
if (!rset.isBeforeFirst())
System.out.println("False");
while (rset.next()) {
System.out.println(rset.getObject(1) + " " +
rset.getString(2) + " " +
rset.getString(3) + " " +
rset.getString(4));
}
}
}
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import oracle.jdbc.pool.OracleDataSource;
public class DataHandler {
public DataHandler() {
}
String jdbcUrl = "jdbc:oracle:thin:@//localhost:1525/XE";
String userid = "correctuserid";
String password = "correctpassword";
Connection conn;
Statement stmt;
ResultSet rset;
String query;
public void getDBConnection() throws SQLException {
OracleDataSource ds;
ds = new OracleDataSource();
ds.setURL(jdbcUrl);
conn = ds.getConnection(userid, password);
}
public ResultSet getAllStudent() throws SQLException {
getDBConnection();
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
query = "SELECT * FROM TEST ORDER BY FullName";
System.out.println("\nExecuting query: " + query);
rset = stmt.executeQuery(query);
return rset;
}
}
当我运行这个程序时,我得到以下结果:
Executing query: SELECT * FROM TEST ORDER BY FullName
False
Process finished with exit code 0
当我在 sqlplus 中编写这个查询时,我得到了这个结果:
enter image description here
所以我的问题是,当我的 table 不为空时,为什么我在 resultset.next() 中得到 false
?
请提交然后再次执行程序。
我不太明白为什么我的代码中有 ResultSet.next() returns false
。
我正在使用 intelliJ Idea 和 oracle 数据库。我有 2 个 类:DataHandler 和 JavaClient
import java.sql.ResultSet;
import java.util.Locale;
public class JavaClient {
JavaClient() {}
public static void main(String[] args) throws Exception {
Locale.setDefault(Locale.ENGLISH);
DataHandler datahandler = new DataHandler();
ResultSet rset = datahandler.getAllStudent();
if (!rset.isBeforeFirst())
System.out.println("False");
while (rset.next()) {
System.out.println(rset.getObject(1) + " " +
rset.getString(2) + " " +
rset.getString(3) + " " +
rset.getString(4));
}
}
}
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import oracle.jdbc.pool.OracleDataSource;
public class DataHandler {
public DataHandler() {
}
String jdbcUrl = "jdbc:oracle:thin:@//localhost:1525/XE";
String userid = "correctuserid";
String password = "correctpassword";
Connection conn;
Statement stmt;
ResultSet rset;
String query;
public void getDBConnection() throws SQLException {
OracleDataSource ds;
ds = new OracleDataSource();
ds.setURL(jdbcUrl);
conn = ds.getConnection(userid, password);
}
public ResultSet getAllStudent() throws SQLException {
getDBConnection();
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
query = "SELECT * FROM TEST ORDER BY FullName";
System.out.println("\nExecuting query: " + query);
rset = stmt.executeQuery(query);
return rset;
}
}
当我运行这个程序时,我得到以下结果:
Executing query: SELECT * FROM TEST ORDER BY FullName
False
Process finished with exit code 0
当我在 sqlplus 中编写这个查询时,我得到了这个结果: enter image description here
所以我的问题是,当我的 table 不为空时,为什么我在 resultset.next() 中得到 false
?
请提交然后再次执行程序。