当前位置: 首页 > 面试题库 >

使用JDBC和MySQL添加行有问题吗?

鄢博简
2023-03-14
问题内容

我正在使用JDBC与MySQL同步,以向MySQL数据库的表添加和定义行。问题是,Exception当我使用ResultSet类中的方法向表中添加行时,我不知道为什么会抛出一个。请记住,我之前已经尝试过通过ResultSet方法读取表,并且它成功打印出了单元格值。以下是有关的代码断裂:

public void  run(){
    try {
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection(                   
                "jdbc:mysql://localhost:3306/temp_book_database","root","1234");

        ResultSet set = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE).executeQuery("SELECT * FROM book_info");


        set.moveToInsertRow();
        set.updateString(1, "Osama's POV"); set.updateString(2, "Osama B Laden"); 
        set.updateInt(3, 2800); set.updateString(4, "Osama bin Laden's debute book on terrorism");
        set.insertRow(); set.moveToCurrentRow();set.beforeFirst();
        //I'm guessing the bottom while loop is not executed because the above is generating the Exception
        while (set.next()){
            System.out.println(set.getString("Book_Title")+ set.getString("Book_Author")+ set.getString("MRP")+set.getString("Comments"));
        }

    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (Exception e){System.out.println("prob with code");
    e.printStackTrace();}

这是控制台:

prob with code
com.mysql.jdbc.NotUpdatable: Result Set not updatable (referenced table has no primary     keys).This result set must come from a statement that was created with a result set type of     ResultSet.CONCUR_UPDATABLE, the query must select only one table, can not use functions and must select all primary keys from that table. See the JDBC 2.1 API Specification, section 5.6 for more details.
at com.mysql.jdbc.UpdatableResultSet.moveToInsertRow(UpdatableResultSet.java:1013)
at testJDBCDriver.run(testJDBCDriver.java:21)
at testJDBCDriver.main(testJDBCDriver.java:9)

[更新]

加入后,id在表列INTEGER AUTO_INCREMENT PRIMARY KEYResultSet成功添加行的表,现在,我只想知道为什么MySQL不接受请求,从添加新行ResultSet如果id列没有出现在该表?


问题答案:

如果您未在表中设置主键,则带有Mysql的JDBC 2.X API在更新模式下将不起作用。



 类似资料:
  • 本文向大家介绍MySQL 8.0.18给数据库添加用户和赋权问题,包括了MySQL 8.0.18给数据库添加用户和赋权问题的使用技巧和注意事项,需要的朋友参考一下 1. 首选使用root用户登录数据库  mysql -uroot -p 2. 使用mysql 数据库 USE mysql; 3. 为mysql创建用户:dev 密码为:dev12345 CREATE USER dev IDENTIFIE

  • 问题内容: 我开始将MySQL与JDBC一起使用。 我要创建3-4张桌子,看起来不太好。 有没有办法从MySQL JDBC运行.sql脚本? 问题答案: 好。您可以在项目中使用此类(由于文件长度而在pastebin上发布)。但是请记住保留Apache许可证信息。 JDBC脚本运行程序 它是iBatis ScriptRunner的剥夺者,已删除依赖项。 你可以这样使用 而已!

  • 问题内容: 我正在尝试连接到本地MySQL服务器,但我一直收到错误消息。 这是代码。 和错误: 我已经设置了类路径,确保my.cnf的“跳过网络”选项已被注释掉。 Java版本是1.2.0_26(64位)mysql 5.5.14 mysql连接器5.1.17 我确保用户可以访问我的数据库。 问题答案: 我的两个程序都遇到了相同的问题。我的错误是这样的: 我花了几天时间解决这个问题。我已经测试了不同

  • 问题内容: 我创建的用户使用。但是我无法连接: 创建user时,我可以连接。为什么?’%’不是来自任何主机吗? 问题答案: 为了远程连接,您必须使MySQL将端口3306绑定到my.cnf中计算机的IP地址。然后,您必须同时在localhost和’%’通配符中创建用户,并在所有DB上授予权限 。 见下文: my.cnf(在Windows上为my.ini) 然后 然后 根据您的操作系统,您可能必须打

  • MySQL Server(在Red Hat 7 OS上运行的远程机器,MySQL版本为5.7.11)启用了SSL,如下所示: 我试图从我的本地计算机(windows)使用SSL(而不是身份验证)建立JDBC加密。下面是这样做的JDBC代码: 我已按照此链接创建证书:https://dev.mysql.com/doc/refman/5.7/en/creating-ssl-files-using-op

  • 本文向大家介绍浅析使用JDBC操作MySQL需要添加Class.forName("com.mysql.jdbc.Driver"),包括了浅析使用JDBC操作MySQL需要添加Class.forName("com.mysql.jdbc.Driver")的使用技巧和注意事项,需要的朋友参考一下 引言 如果熟悉使用JDBC来连接数据库的同学一定很清楚连接数据库的代码中一定会有依据Class.forNam