2016-09-16 7 views
-1

Ich versuche, meine MYSQL-Tabelle mit diesem Code zu aktualisieren.MySQL-Abfrage funktioniert nicht (C#)

string sqlquery = String.Format("if exists(select 1 from orders where id =\" {0}\") begin update orders set customer_id = \"{1}\", total = \"{2}\", fio = \"{3}\", adress =\" {4}\" where id = \"{0}\" end else begin insert into orders (id, customer_id, total, fio, adress) values(\"{0}\", \"{1}\", \"{2}\", \"{3}\", \"{4}\") end", id, customer_id, total, fio, adress); 

MySqlCommand addCommand2 = new MySqlCommand(sqlquery.ToString(), connection); 
addCommand2.ExecuteNonQuery(); 

Aber ich habe diesen Fehler

Additional information: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'if exists(select 1 from orders where id = 1913) begin update orders set custome' at line 1 

Datenbank

enter image description here

was falsch in Abfrage?

Danke für Ihre Hilfe!

+0

Posten Sie hier, was Sie in der 'sqlquery' zur Laufzeit zu bekommen. – feeeper

+1

Ihr Spaltenname ist '1'? –

+0

Ich bekomme Fehler, wenn Code startet @ feeeper – Eugene

Antwort

2

warum nicht Sie es in eleganter Art und Weise zu tun: So etwas wie .:

using (SqlConnection connection = new SqlConnection(connectionString)) 
using (SqlCommand command = connection.CreateCommand()) 
{ 
command.CommandText = "if exists(select 1 from orders where id [email protected])  
begin 
update orders set customer_id = @customer_id, total = @total, fio = @fio, adress [email protected] where id = @id end 
else 
    begin insert into orders (id, customer_id, total, fio, adress) values(@id, @customer_id, @total, @fio,@adress) end"; 

    command.Parameters.AddWithValue("@id", val1); 
    command.Parameters.AddWithValue("@customer_id", val2); 
    command.Parameters.AddWithValue("@total", val3); 
    command.Parameters.AddWithValue("@fio", val4); 
    command.Parameters.AddWithValue("@adress", val5); 
    connection.Open(); 
    command.ExecuteNonQuery(); 
    connection.Close(); 
} 
+0

viel besser in Bezug auf die Sauberkeit – vish1990

+0

Haben Sie den gleichen Fehler – Eugene

+0

verpasste geschlossene Klammer in 'if' Zustand.Check now. – Vicky