繁体   English   中英

使用Java预准备语句将新记录添加到数据库

[英]Adding a new record to a database with java prepared statements

我正在创建一种方法来从接口加载值以在数据库中创建新记录。

我尝试了几种方法,并不断得到不同的错误。

线程“ main”中的异常com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:键“ PRIMARY”的条目“ 939”重复

    public boolean newStudent(String studentId, String name, String degreeScheme) throws SQLException 
{ 
    // Use SIMPLEDATASOURCE connection

连接conn = SimpleDataSource.getConnection();

线程“ main”中的异常com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误。 检查与您的MySQL服务器版本对应的手册以获取正确的语法,以在第1行的'student_name ='mark'degree_Scheme ='cis'附近使用

        try {
          conn.createStatement();
          PreparedStatement stat = conn.prepareStatement( "UPDATE student SET studentId = ?");
          stat.setString(1,studentId); // Use parameter 
          stat.executeUpdate(); // Execute prepared stat
         return stat.executeUpdate() == 1 ;

        }
    finally
    {
        // Close the connection
        conn.close();
    }
}

那里的地方有问题吗?

Duplicate entry '939' for key 'PRIMARY'

这表明您正在插入一行或更新一行以使其具有表中已经存在的PRIMARY KEY值。 (组成PRIMARY KEY的列的值在每一行上必须是唯一的;任何两行都不能具有相同的值。)

该查询:

UPDATE student SET studentId = ?

尝试将每一行的studentId列设置为相同的值。

我们猜测studentId被定义为student表的PRIMARY KEY,并且该表包含多个行。 我们希望该语句的执行会引发“重复键”异常,就像您要报告的异常一样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM