我向数据库中插入了数据,插入完毕之后我想查看整个表当中的数据。但是只能看到以前的,看不到最新的。我想到使用refreshRow方法刷新纪录,代码片断如下:
public static void main(String [] args) {try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    } catch (ClassNotFoundException ce) {
System.out.println(ce);
    }
try {
        String url = "jdbc:odbc:test";
Connection con = DriverManager.getConnection(url);
        Statement stmt = con.createStatement(
        ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery("select * from friends ");
        rs.moveToInsertRow();//进行插入准备.
        rs.updateString("Name", "Jack");
        rs.updateString("Address", "Tokyo");
        rs.updateInt("salary", 65000);
        rs.insertRow();//插入数据.
        rs.beforeFirst();//将指针移动到此 ResultSet 对象的开头,正好位于第一行之前。
        rs.refreshRow();//执行到此便出了异常。
System.out.println("插入一行后的 FRIENDS 表:");
        while (rs.next()) {
String name = rs.getString("Name");
String address = rs.getString("Address");
            int salary = rs.getInt("Salary");
            System.out.print(name + "\t" + address + "\t" + salary);
System.out.println(" ");
    }
rs.close();
stmt.close();
con.close();
    } catch (SQLException ce) {
        ce.printStackTrace();
System.out.println(ce);
    }
    }
}
出现的异常如下:
java.sql.SQLException: Cursor position is invalid
        at sun.jdbc.odbc.JdbcOdbcResultSet.refreshRow(JdbcOdbcResultSet.java:4135)
        at JdbcInserttest.main(JdbcInserttest.java:48)
java.sql.SQLException: Cursor position is invalid
这个问题怎么解决阿。谢谢了。

解决方案 »

  1.   

    你的这种方法只是向当前的ResultSet中插入了一个新行,并没有向数据库中插入数据,如果要向数据库中插入数据应该用executeUpdate(String sql) 执行insert语句来插入数据,
     rs.beforeFirst();//此句把指针指向了第一行的前面,实际上没有指向任何行
     rs.refreshRow();//此方法是用数据库中当前的数据来刷新当前ResultSet的当前行,游标没有指向任何行时执行此方法,显然会有问题