2016-12-04 1 views
0

Hé les gars, j'en ai presque fini avec mon projet CRUD pour mon projet de base de données. J'essaie juste de finir et compléter la fonctionnalité de suppression.Supprimer l'exception de requête appelée C#

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

Ma variable mDeleteTextBox est remplie avec la valeur que je veux. Quel est le problème avec ma requête?

MESSAGE D'ERREUR

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

double possible de [Comment puis-je échapper des mots réservés utilisés comme noms de colonnes? MySQL/Créer une table] (http://stackoverflow.com/questions/2889871/how-do-i-escape-reserved-words-used-as-column-names-mysql-create-table) – Eris

+0

Aussi, votre '{ 0} 'doit avoir des guillemets, ou mieux encore, utiliser une requête paramétrée: http: //stackoverflow.com/questions/652978/parameterized-query-for-mysql-with-c-sharp – Eris

+1

Aussi, vérifiez que dans le type mDeleteTextBox est une chaîne. Peut-être que vous vouliez écrire mDeleteTextBox.Text? – Nigrimmist

Répondre

4

Vos informations supplémentaires dit tout: vous essayez de passer mTextBox comme paramètre pour votre requête, mais pour accéder au contenu de la zone de texte lui-même (ce qui est des données vous souhaitez utiliser pour compléter votre requête), vous devez accéder à la propriété Text de la zone de texte.

Ainsi, votre code:

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

est devenu

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

Une meilleure réponse serait d'apprendre à l'OP comment utiliser les paramètres et ne jamais créer des instructions SQL comme ça. Ceci est ouvert pour l'injection sql. – GuidoG