2016-05-10 13 views
0

Ich bin mit meiner quo_custname, die in meinem Dropdownlist und verwenden Sie den Wert auf Setzen Sie meine data.So binden, wenn ich Wert auf meine Dropdownlist quo_name wählen Änderung aber immer wenn ich meine Klasse für mysql Insertion verwenden.System.Data.SqlClient.SqlException auf mehreren WHERE Abfrage

Ich erhalte diese Fehler Additional information: Incorrect syntax near the keyword 'WHERE'.

Hier ist mein Code:

private void AddToQuotation() 
    { 
     con.Open(); 
     cmd = new SqlCommand(@"INSERT INTO JobQuotations 
          (quo_disount,quo_unitPrice,quo_TotalAmount,quo_finishing) 
          VALUES 
          ('@discount','@unitPrice','@totalAmount' 
          ,'@finishing') 
          WHERE quo_custname = '@customername' 
          AND quo_verified = 'no'",con); 

     cmd.Parameters.AddWithValue("@customername",DropDownList3.SelectedItem.Value.ToString()); 
     cmd.Parameters.AddWithValue("@discount",txtDisc.Text); 
     cmd.Parameters.AddWithValue("@unitPrice",txtUnitPrice.Text); 
     cmd.Parameters.AddWithValue("@totalAmount",lblTotalAmount.Text); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 
     string script = "alert(\"Functioning!\");"; 

     ScriptManager.RegisterStartupScript(this, GetType(), 
      "ServerControlScript", script, true); 
    } 

* Bonus Frage auch, wie könnte ich versuchen und fangen mit so, dass es nicht mein Programm brechen würde und erhalten der SqlException-Name und die Zusätzliche Informationen in meinem Skript, um eine Nachricht zu öffnen.

+0

http://stackoverflow.com/questions/17463904/inserting-using-where-clause-in-sql-table-dynamic – Shanthini

+0

Schreiben Sie Ihre Parameter '@ Kundenname' statt' '@ Kundenname'' sonst werden sie als String erkannt – fubo

Antwort

3

Ihre Aussage macht für mich keinen Sinn. Sie mischen insert into select Syntax mit insert into values Syntax. Außerdem verwenden Sie Anführungszeichen um Ihre Parameter, die nicht funktionieren (sie werden jetzt als Literale interpretiert).

Sind Sie sicher, dass Sie nicht aktualisieren wollten?

update JobQuotations 
set quo_disount  = @discount 
,  quo_unitPrice = @unitPrice 
,  quo_TotalAmount = @totalAmount 
,  quo_finishing = @finishing 
where quo_custname = @customername 
and quo_verified = 'no' 
+0

Nein, ich aktualisiere nicht. –

+0

Also was ist der Zweck der 'wo' dann? –

+0

Ich versuche, dieses sqldata in meine Null-Spalten einzufügen. Ihr Anfangswert war Null.Beispiel: totalAmount ist null, also muss ich Wert darauf einfügen, um seinen Preis zu haben, nachdem ich es berechnet habe. –

0

Es scheint, dass Sie eine Insert-Anweisung erstellen und gleichzeitig eine WHERE-Bedingung angeben. SQL-Einfügungen verwenden normalerweise keine WHERE-Bedingungen, daher möchten Sie diesen Teil wahrscheinlich entfernen.

0

für diese Verwendung Update-Abfrage, die Sie in der Datenbank aufgezeichnet haben.

+0

Es gab bereits eine umfassende Antwort, die ins Detail geht. Keine Notwendigkeit für diesen Kommentar. –

0

Sie verwenden eine WHERE-Klausel in einer INSERT-Anweisung, es wird nicht funktionieren, weil wir eine where-Klausel mit einer INSERT-Anweisung nicht verwenden können. Entweder haben Sie verwenden:

INSERT INTO JobQuotations(quo_disount,quo_unitPrice,quo_TotalAmount,quo_finishing) 
        VALUES('@discount','@unitPrice','@totalAmount','@finishing') 

oder

UPDATE Anweisung (wenn Sie WHERE verwenden möchten).

Verwandte Themen