Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java无效的游标类型访问_Java - Fatal编程技术网

Java无效的游标类型访问

Java无效的游标类型访问,java,Java,我一直在 **********************错误************************************** 无效的游标类型:1003 我不明白为什么。我有RS.next(),然后我通过While(RS.next())。我做错了什么?请帮忙谢谢管理员说: 插入行是与可更新的结果集关联的特殊行 (强调矿山) 报告说: 默认的ResultSet对象是不可更新的,其光标仅向前移动。因此,您只能遍历它一次,并且只能从第一行到最后一行。可以生成可滚动和/或可更新的ResultSe

我一直在 **********************错误************************************** 无效的游标类型:1003

我不明白为什么。我有RS.next(),然后我通过While(RS.next())。我做错了什么?请帮忙谢谢

管理员说:

插入行是与可更新的结果集关联的特殊行

(强调矿山)

报告说:

默认的ResultSet对象是不可更新的,其光标仅向前移动。因此,您只能遍历它一次,并且只能从第一行到最后一行。可以生成可滚动和/或可更新的ResultSet对象。下面的代码片段(其中con是有效的连接对象)说明了如何创建一个可滚动且对他人更新不敏感的结果集,,并且该结果集是可更新的。有关其他选项,请参见结果集字段


您需要打开可更新的结果集:

public static void insertData() {
        String insertFirstName;
        String insertLastName;
        int id;
        Scanner in = new Scanner(System.in);

        System.out.println("insert First Name: ");
        insertFirstName = in.nextLine();
        System.out.println("insert Last Name: ");
        insertLastName = in.nextLine();

        System.out.println("First name " + insertFirstName + " Last Name "
                + insertLastName);

        try {
            Statement statement = null;
            Class.forName(JDBC_DRIVER);
            Connection con = DriverManager.getConnection(DB_URL, "", "");
            System.out.println("Connection Successfull");
            statement = con.createStatement();
            String sql = "Select id, FirstName, LastName FROM PhoneBook";
            ResultSet rs = statement.executeQuery(sql);

            rs.moveToInsertRow();
            rs.next();
            while (rs.next()) {

                rs.updateString("FirstName", insertFirstName);
                rs.updateString("LastName", insertLastName);
                rs.insertRow();
            }
            statement.close();
            rs.close();

        } catch (Exception e) {
            System.out
                    .println("********************ERROR*********************");
            System.out.println(e.getMessage());
        }

    }
有关更多信息,请参阅

除此之外,在
rs.moveToInsertRow()之后调用
rs.next()
时,您可能移动得有点太远了。文档中的示例显示了您应该如何执行此操作:

statement = con.createStatement(
    ResultSet.TYPE_SCROLL_INSENSITIVE, 
    ResultSet.CONCUR_UPDATABLE
);

你从哪里得到的错误?请发布完整堆栈跟踪。*************************************************错误*********************java.sql.SQLException:无效游标类型:1003位于sun.jdbc.odbc.JdbcOdbcResultSet.moveToInsertRow(JdbcOdbcResultSet.java:4306)位于javaapplication7.javaapplication7.main处的insertData(javaapplication7.java:89)(JavaApplication7.java:31)构建成功(总时间:3秒)请将其编辑到问题中,而不仅仅是放在注释中。
rs.moveToInsertRow(); // moves cursor to the insert row
rs.updateString("FirstName", insertFirstName);
rs.updateString("LastName",  insertLastName);
rs.insertRow();