作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用以下代码访问数据库:
try {
//Create Data Source and set properties
SQLServerDataSource ds = new SQLServerDataSource();
ds.setServerName(MY_SERVER);
ds.setDatabaseName(MY_DATABASE);
ds.setIntegratedSecurity(true);
//Establish connection
Connection conn = ds.getConnection();
//Define query
String query = "SELECT * from dbo.InvPrice;";
//Create Statement and execute query
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
//Print off table column names to make sure
//that we have actually connected to table
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
for(int i=1; i<=numberOfColumns; i++)
System.out.print(rsmd.getColumnName(i)+" ");
System.out.println();
//Check to make sure ResultSet isn't empty
if(!rs.isBeforeFirst())
System.out.println("NO DATA");
//loop through ResultSet, printing off first column
while(rs.next()); {
System.out.println(rs.getString(1));
}
}
catch (Exception e) {
e.printStackTrace();
}
finally {
try { if (rs != null) rs.close(); } catch (Exception e) {};
try { if (stmt != null) stmt.close(); } catch (Exception e) {};
try { if (conn != null) conn.close(); } catch (Exception e) {};
}
}
当我运行代码时,会打印出正确的列名称,但是当我尝试使用 rs.getString(1)
访问 ResultSet 中的数据时,会出现 com.microsoft抛出.sqlserver.jdbc.SQLServerException
。它指定“结果集没有当前行”,但我不明白这是怎么可能的,因为如果光标超出数据末尾,则 while 循环应该阻止程序尝试访问数据。
最佳答案
if 语句后面有一个分号,充当空语句:
while(rs.next()); { // remove the semi-colon
这会导致ResultSet
的游标遍历所有行,直到没有它指向的行,从而导致异常。
关于java - 为什么我会收到此 SQLServerException : "The result set has no current row",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31415854/
我是一名优秀的程序员,十分优秀!