2017-06-01 80 views
-1

我想對我的表執行一個插入操作,但是當找到一個重複的鍵時,必須對特定列進行更新,所以我使用了重複的鍵SQL函數,並且調試器顯示了這個錯誤:在重複的鍵語法錯誤

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'duplicated key undate timeout ='0'+'2'' at line 1

這裏是我的代碼:

query = "insert into regrouper values('" + nummach + "','" + numpan + "','" + date.ToString(format) + "','" + timeout + "') on duplicated key undate timeout ='"+oldtime+"'+'"+timeout+"'"; 

commandDatabase = new MySqlCommand(query, databaseConnection); 
MySqlDataReader myReader4 = commandDatabase.ExecuteReader(); 
+2

'重複密鑰更新'不'重複密鑰更新'上。而且,您需要使用參數化查詢而不是查詢字符串。 –

+1

任何時候當你有一個SQL問題時,你都需要告訴我們你使用的是什麼版本的SQL(SQL Server?MySQL?Oracle?PostgreSQL?),因爲語法不同。 –

+0

好的,謝謝你的幫助 –

回答

0

我認爲它只是一個拼寫錯誤,而不是undate See Examples

0 .. 寫 「更新」
query = "insert into regrouper values('" + nummach + "','" + numpan + "','" + date.ToString(format) + "','" + timeout + "') on duplicated key update timeout ='"+oldtime+"'+'"+timeout+"'"; 

    commandDatabase = new MySqlCommand(query, databaseConnection); 
    MySqlDataReader myReader4 = commandDatabase.ExecuteReader(); 
+0

複製到複製和更新後修復後,它適用於你 –

0

檢查你的拼寫。也更好地使用string.Format字符串連接。

query = string.Format(
     "insert into regrouper values('{0}','{1}','{2}','{3}') on duplicate key update timeout ='{4}'+'{3}'", 
     nummach, numpan, date.ToString(format), timeout);