使用java预处理语句向数据库添加新记录

时间:2015-02-15 21:09:08

标签: java mysql sql prepared-statement

我正在创建一个从接口加载vales以在我的数据库中创建新记录的方法。

我尝试了几种方法并且不断出现错误。

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

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

Connection conn = SimpleDataSource.getConnection();

线程中的异常" main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法中有错误;检查与您的MySQL服务器版本对应的手册,以便在#student; = = degree_Scheme =' cis''在第1行

        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();
    }
}

1 个答案:

答案 0 :(得分:1)

那里有什么问题吗?

Duplicate entry '939' for key 'PRIMARY'

这表示您要么插入行,要么更新行以具有表中已存在的PRIMARY KEY值。 (构成PRIMARY KEY 的列的值必须在每一行上都是唯一的;没有两行可以具有相同的值。)

此查询:

UPDATE student SET studentId = ?

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

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