Java ResultSet.next始终为false,已填充表格
我的桌子:Java ResultSet.next始终为false,已填充表格,java,sql,oracle,jdbc,resultset,Java,Sql,Oracle,Jdbc,Resultset,我的桌子: create table ranking (rennId int not null, fId int not null, pos int not null, CONSTRAINT key PRIMARY KEY (rennId,fId)) 我的java代码: try { Connection con = DriverManager.getConnection(url, user, password); ResultSet ret = con.createStatem
create table ranking (rennId int not null, fId int not null, pos int not null, CONSTRAINT key PRIMARY KEY (rennId,fId))
我的java代码:
try {
Connection con = DriverManager.getConnection(url, user, password);
ResultSet ret = con.createStatement().executeQuery("select * from ranking");
while (ret.next())
System.out.println("test");
} catch (SQLException e) { e.printStackTrace(); }
手动测试:
sql> select * from ranking
[2017-06-13 03:21:59] 3 rows retrieved starting from 1 in 52ms (execution: 45ms, fetching: 7ms)
作为独立测试仅出现在该表上显然,这是与DataGrip相结合的问题。 这段代码实际上会选择在此应用程序中创建的所有条目,但会忽略通过DataGrip创建的所有条目。
似乎与组合主键有关我认为这是try与resources的约定,以保证在表达式完成执行后关闭try子句中指定的资源。我相信结果集也会在try块的末尾被关闭,因此调用next()返回false,因为没有任何错误there@user7790438但是结果上的循环完全在
try
块内。为什么您希望在此时关闭任何资源?create query和select query中的表的名称是否有不同的用途?@SHG对不起,复制粘贴失败,它们是same@user7790438接下来,一个封闭的结果会抛出一个错误,即使它真的被测试了,这里的情况并非如此