2017-05-02 4 views
-1

私はC#でこれを使用します。C#とmysql、スローに挿入exeotuib

Registration.CommandText = "INSERT INTO `DBname`.`tablename`(`id`,`column1`,`column2`,`column3`)VALUES(6, x, x, x);"; 

この例外が出力されます。私がmysqlのworkbenchクエリで同じコマンドを使用すると、それは動作しません。私はこれが安全ではないことを知っています。誰かがもっと安全な方法を知っていれば、私は感謝しています。

MySql.Data.MySqlClient.MySqlException: 'Unknown column 'x' in 'field list'' 
+0

は 'id'列は外部キーですか? – Valentin

+0

あなたの列を見てみましょう文字がある場合はxが入ります ' –

+1

' x 'を一重引用符で囲む必要があります。そうしないと、mysqlは列名として取ります。 – Gusman

答えて

0

データが信頼できないソース(ユーザーなど)からのものである場合は、準備済みのステートメントを使用することを実際に検討する必要があります。しかし、これはあなたの問題を解決するのにも役立ちます。

MySqlCommand myCommand = new MySqlCommand("SELECT * FROM myDb.Table WHERE col_A = @val_a AND col_B = @val_b", MySqlConn.conn); 

myCommand.Parameters.AddWithValue("@val_a", someUserInput); 
myCommand.Parameters.AddWithValue("@val_b", otherUserInput); 
myCommand.Prepare(); 

MySqlDataReader reader = myCommand.ExecuteReader(); 

私はあなたが正しい方向に進むのを助けるべきだと考えています。

+0

その部分ではsomeuserinputは変数を置く場所です。私が正しく見えるようにするにはどうすればいいのですか? – dkman

+0

'' INSERT INTO 'DBname'.'tablename'(' id'、 'column1'、' column2'、 'column3')VALUES(6、x、x、x ); "': 'myCommand = new MySqlCommand(" INSERT INTO DBName.Table(col_1、col_2、col_3)VALUES(@ val_1、@ val_2、@ val_3); ")' 'myCommand.Parameters.AddWithValue(" "@ val_1"、valueForVal_1); // ... etc ... ' – shloop