日期:2014-05-20  浏览次数:20614 次

JDBC: 结果集更新的问题,帮忙!
将结果集updateRow(),数据表的实际值已经更新,但是检查该结果集rwoUpdated()却返回false,不知道为什么,代码如下:

resultSet.updateString( "bookName ",texts.get(1).getText());
resultSet.updateString( "ISBN ",texts.get(2).getText());
resultSet.updateString( "memo ",texts.get(3).getText());
resultSet.updateRow();


//在此检查resultSet.rowUpdated()返回false;

问题:
1.执行完上述代码后没有任何异常,但是检查resultSet.rowUpdated()返回false
2.在执行上述代码之前,已经resultSet.absolute(2);执行上述代码后再次resultSet.absolute(2),而且查看数据库表中的数据确实已经被更新,但是执行resultSet.getString( "bookName ")等却返回更新前的数据,这是为什么?

说明:
1.数据库使用SQL   Server   2000,JDBC连接取数都没有问题
2.该结果集是可滚动可更新的(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE)已经测试。
3.该结果集中放的是检索的数据,即“select.....”
4.执行上述代码后,查看数据库表里的实际数据已经被更新了。



------解决方案--------------------
是不是需要重新生成rs呀,我这里有一段代码,希望能帮上你,
try
{
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver ");
con=DriverManager.getConnection( "jdbc:odbc:student ", "sz ", "sz ");
stm=con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
rs=stm.executeQuery(sqlcommand2);
rs.next();
for(int i=0;i <rs.getRow();i++)
{
rs.moveToCurrentRow();//你没有这条语句,试试看
rs.updateInt(subject,i+1);
rs.updateRow();
rs.next();
}
rs.close();
stm.close();
con.close();
}catch(Exception e)
{
}
------解决方案--------------------
朋友有没有好一点的java书,介绍一下
------解决方案--------------------
我用的数据库是Access,按照我上面的程序代码操作,显示的结果为修改后的数据,顶