将结果集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.执行上述代码后,查看数据库表里的实际数据已经被更新了。
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.执行上述代码后,查看数据库表里的实际数据已经被更新了。
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)
{
}
rs.updateInt(subject,i+1);
rs.updateRow();
System.out.println(rs.getInt(subject)); //加上这句,看看打印出什么,如果你更新前的值和更新后的不一样,看看打印出什么时候的值。
我把数据库换成了Oracle,可以了,但是为什么SQLServer不可以呀,我不能换数据库的,请教高手,救命