2016-12-04 2 views
0

Hey Leute, ich bin fast fertig mit meinem CRUD Projekt für mein Datenbank Projekt. Ich versuche nur, die Löschfunktionalität zu beenden und abzuschließen.Abfrage löschen Ausnahme wird aufgerufen C#

query = string.Format("DELETE FROM customers WHERE `cid`= {0};", mDeleteTextBox); 

Meine Variable mDeleteTextBox ist mit dem gewünschten Wert gefüllt. Was ist falsch an meiner Anfrage?

ERROR MESSAGE

An unhandled exception of type 'MySql.Data.MySqlClient.MySqlException' occurred in MySql.Data.dll 

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 '.TextBox, Text: 6' at line 1 
+0

Mögliche Duplikat [Wie kann ich als Spaltennamen verwendet reservierte Wörter entkommen? MySQL/Tabelle erstellen] (http://stackoverflow.com/questions/2889871/how-do-i-escape-reserved-words-used-as-column-names-mysql-create-table) – Eris

+0

Auch Ihre '{ 0} 'benötigt Anführungszeichen, oder noch besser, verwenden Sie eine parameterisierte Abfrage: http: //stackoverflow.com/questions/652978/parameterized-query-for-mysql-with-c-sharp – Eris

+1

Überprüfen Sie auch, dass in mDeleteTextBox-Typ ist eine Zeichenfolge. Vielleicht wollten Sie mDeleteTextBox.Text schreiben? – Nigrimmist

Antwort

4

Ihre zusätzliche Informationen schon sagt: Sie versuchen, mTextBox als Parameter für Ihre Anfrage zu übergeben, sondern um sich den Inhalt der Textbox zuzugreifen (die die Daten die Sie verwenden möchten, um Ihre Abfrage abzuschließen), sollten Sie auf die Eigenschaft Text des Textfelds zugreifen.

So, Ihr Code:

query = string.Format("DELETE FROM customers WHERE `cid`= {0};", mDeleteTextBox); 

wurde

query = string.Format("DELETE FROM customers WHERE `cid`= {0};", mDeleteTextBox.Text); 
+0

Eine bessere Antwort würde dem OP beibringen, wie man Parameter benutzt und niemals SQL-Anweisungen wie diese erstellt. Dies ist offen für SQL-Injektion. – GuidoG

Verwandte Themen