2017-06-01 5 views
-1

Ich möchte eine Einfügeoperation in meine Tabelle ausführen, aber wenn ein duplizierter Schlüssel gefunden wird, muss ein Update für eine bestimmte Spalte durchgeführt werden, also habe ich doppelte SQL-Funktion verwendet, und der Debugger zeigt dies Fehler:auf doppelten Schlüssel Syntaxfehler

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

Hier ist mein Code:

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

'auf doppelte Schlüsselaktualisierung' nicht 'auf verdoppeltem Schlüsselupdate'. Sie müssen jedoch auch parametrisierte Abfragen anstelle von Abfragezeichenfolgen verwenden. –

+1

Wann immer Sie eine SQL-Frage haben, müssen Sie uns sagen, welche Version von SQL (SQL Server? MySQL? Oracle? PostgreSQL?) Sie verwenden, weil die Syntax anders ist. –

+0

ok, danke für deine Hilfe –

Antwort

0

ich denke, es ist nur ein Rechtschreibfehler .. schreiben "update" statt undate See Examples

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

Nach dem Reparieren auf dupliziert dupliziert und undate zu aktualisieren, es funktioniert thnak Sie –

0

Überprüfen Sie Ihre Schreibweisen. Verwenden Sie auch besser string.Format für String-Verkettungen.

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