2016-12-04 5 views
0

ちょっと私のデータベースプロジェクトのCRUDプロジェクトでやっていますね。私はちょうどフィニッシュを完了し、削除機能を完了しようとしています。クエリの例外が呼び出されるのを削除するC#

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

私の変数mDeleteTextBoxは、私が望む値で埋められています。 質問に間違いがありますか?

エラーメッセージ

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

になりましたか? MySQLの/テーブルを作成する](http://stackoverflow.com/questions/2889871/how-do-i-escape-reserved-words-used-as-column-names-mysql-create-table) – Eris

+0

また、あなたの '{ 0}}に引用符を付ける必要があります。または、より良いのは、パラメータ照会クエリを使用することです。http://stackoverflow.com/questions/652978/parameterized-query-for-mysql-with-c-sharp – Eris

+1

また、mDeleteTextBoxタイプ文字列です。あなたはmDeleteTextBox.Textを書いたかったでしょうか? – Nigrimmist

答えて

4

はあなたの追加情報は、それをすべて言う:あなたはあなたのクエリのパラメータとしてmTextBoxを渡そうとしますが、データであるテキストボックス自体(のコンテンツにアクセスするためにしていますクエリを完了するために使用したい場合)、テキストボックスのTextプロパティにアクセスする必要があります。

だから、あなたのコード:

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

は、[どのように私は、列名として使用される予約語をエスケープするかの可能性のある重複

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

より良い答えは、OPをどのようにパラメータを使用するように教え、決してこのようなSQL文を構築することはありません。これはSQLインジェクションのために開かれています。 – GuidoG

関連する問題