簡體   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