stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                       ResultSet.CONCUR_UPDATABLE);
不行吗

解决方案 »

  1.   

    public void testUpdateObject() throws Exception
    {
    Statement st =
    connection.createStatement(
    ResultSet.TYPE_SCROLL_SENSITIVE,
    ResultSet.CONCUR_UPDATABLE);
    ResultSet rs = st.executeQuery("select * from jdbc");
    if (rs.next())
    {
    rs.updateObject("AINT", "1234");
    rs.updateObject("ASTRING", Calendar.getInstance().toString());
    rs.updateObject("ADATETIME", "1977-2-1");
    try
    {
    int iPos = rs.findColumn("SOME");
    rs.updateObject("SOME", "1977-2-1");
    }
    catch (Exception e)
    {
    }
    rs.updateRow();
    } rs.close();
    st.close();
    }
      

  2.   

    我将代码改了改:
    public void testUpdateObject() throws Exception
    {
    int aa[] =
    {
    ResultSet.TYPE_FORWARD_ONLY,
    ResultSet.TYPE_SCROLL_INSENSITIVE,
    ResultSet.TYPE_SCROLL_SENSITIVE };
    int bb[] = { ResultSet.CONCUR_READ_ONLY, ResultSet.CONCUR_UPDATABLE }; for (int i = 0; i < aa.length; i++)
    {
    for (int j = 0; j < bb.length; j++)
    {
    System.out.println("[" + aa[i] + "," + bb[j] + "]");
    try
    {
    Statement st = connection.createStatement(i, j);
    ResultSet rs = st.executeQuery("select * from jdbc");
    if (rs.next())
    {
    rs.updateObject("AINT", "1234");
    rs.updateObject(
    "ASTRING",
    Calendar.getInstance().toString());
    rs.updateObject("ADATETIME", "1977-2-1"); rs.updateRow();
    rs.close();
    st.close();
    }
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    }
    }
    }结果输出如下:
    [1003,1007]
    java.sql.SQLException: 对只读结果集的无效操作: updateObject
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:210)
    at oracle.jdbc.driver.BaseResultSet.updateObject(BaseResultSet.java:298)
    at oracle.jdbc.driver.OracleResultSet.updateObject(OracleResultSet.java:2787)
    at testJDBC.testUpdateObject(testJDBC.java:79)
    at testJDBC.main(testJDBC.java:147)
    [1003,1008]
    java.sql.SQLException: 调用中的无效参数
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:210)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:273)
    at oracle.jdbc.driver.ResultSetUtil.getRsetTypeCode(ResultSetUtil.java:158)
    at oracle.jdbc.driver.OracleConnection.privateCreateStatement(OracleConnection.java:452)
    at oracle.jdbc.driver.OracleConnection.createStatement(OracleConnection.java:401)
    at testJDBC.testUpdateObject(testJDBC.java:75)
    at testJDBC.main(testJDBC.java:147)
    [1004,1007]
    java.sql.SQLException: 调用中的无效参数
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:210)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:273)
    at oracle.jdbc.driver.ResultSetUtil.getRsetTypeCode(ResultSetUtil.java:158)
    at oracle.jdbc.driver.OracleConnection.privateCreateStatement(OracleConnection.java:452)
    at oracle.jdbc.driver.OracleConnection.createStatement(OracleConnection.java:401)
    at testJDBC.testUpdateObject(testJDBC.java:75)
    at testJDBC.main(testJDBC.java:147)
    [1004,1008]
    java.sql.SQLException: 调用中的无效参数
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:210)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:273)
    at oracle.jdbc.driver.ResultSetUtil.getRsetTypeCode(ResultSetUtil.java:158)
    at oracle.jdbc.driver.OracleConnection.privateCreateStatement(OracleConnection.java:452)
    at oracle.jdbc.driver.OracleConnection.createStatement(OracleConnection.java:401)
    at testJDBC.testUpdateObject(testJDBC.java:75)
    at testJDBC.main(testJDBC.java:147)
    [1005,1007]
    java.sql.SQLException: 调用中的无效参数
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:210)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:273)
    at oracle.jdbc.driver.ResultSetUtil.getRsetTypeCode(ResultSetUtil.java:158)
    at oracle.jdbc.driver.OracleConnection.privateCreateStatement(OracleConnection.java:452)
    at oracle.jdbc.driver.OracleConnection.createStatement(OracleConnection.java:401)
    at testJDBC.testUpdateObject(testJDBC.java:75)
    at testJDBC.main(testJDBC.java:147)
    [1005,1008]
    java.sql.SQLException: 调用中的无效参数
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:210)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:273)
    at oracle.jdbc.driver.ResultSetUtil.getRsetTypeCode(ResultSetUtil.java:158)
    at oracle.jdbc.driver.OracleConnection.privateCreateStatement(OracleConnection.java:452)
    at oracle.jdbc.driver.OracleConnection.createStatement(OracleConnection.java:401)
    at testJDBC.testUpdateObject(testJDBC.java:75)
    at testJDBC.main(testJDBC.java:147)