【发布时间】:2012-02-07 12:35:28
【问题描述】:
我正在使用 Microsoft JDBC 驱动程序 (mssqlserver.jar) 从我的 SQL Server 数据库中检索一个简单的 ResultSet。我认为是从[Microsoft JDBC][1]下载的MSSQL2000驱动程序
我想多次调用 getter 方法来访问这些值,但是当你这样做时会引发以下异常:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]ResultSet无法重新读取第 1 列的行数据。
问题是,我正在将数据检索到 ResultSet 中。从 ResultSet 中,我在将 ResultSet 传递到代码中的其他地方以供重用之前访问我的代码中的数据。
代码类似如下:
// build query string
String selectQuery = "SELECT * FROM SomeWhere";
// get the data
Statement statement = sourceConnection.createStatement();
ResultSet rs = statement.executeQuery(selectQuery);
while( rs.next() ) {
// do my own internal processing
doSomethingWithRs(rs);
// now do something with the record set outside - in subclass
afterRowCopied(rs);
}
// ...
private void doSomethingWithRs(ResultSet rs) {
// access data
for( int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
Object o = rs.getObject(i);
// do something with o...
}
}
编辑
我为此使用 Java 1.6。
结束编辑
有什么想法吗? 我能想到的就是将带有 ResultSetMetaData 的数据重新打包到一个自定义类中。
没有找到太多关于这个问题的帖子。 Microsoft 网站根本没有任何帮助。
【问题讨论】:
-
是否可以更换驱动。你能用jtds代替jtds.sourceforge.net
-
sandeepnair85,未来值得期待的东西——绝对是。但是还不能改变,因为一切都几乎是面向数据库的,这将导致大量测试,因为管理层不会 100% 有信心更换。会为您的回答 +1,但您必须先删除,然后再发表此评论
标签: java sql-server jdbc resultset