2012-01-30 11 views
0

こんにちは私は実行に1つの問題があります。c#mysql connection

私が欲しい
string MyConString = "SERVER=<snip>;" + "DATABASE=<snip>;" + "UID=<snip>;" + "PASSWORD=<snip>;"; 
MySqlConnection connection = new MySqlConnection(MyConString); 
MySqlCommand command = connection.CreateCommand(); 

command.CommandText = "UPDATE characters SET nobless=1 WHERE char_name="; 

connection.Open(); 
try 
{ 
    command.BeginExecuteNonQuery(); 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.Message); 
} 
MessageBox.Show("Done"); 
connection.Close(); 

command.CommandText = "UPDATE characters SET nobless=1 WHERE char_name="; 

WHERE char_name = textbox1.text 

例えば、私はそれを行うことができますか?例えば
は、私はそれを作る場合:

command.CommandText = "UPDATE characters SET nobless=1 WHERE char_name='hello'"; 

それが動作します。

が、私はそれを持っている場合:それは動作しません

command.CommandText = "UPDATE characters SET nobless=1 WHERE char_name="+listbox1.selecteditem.toString(); 

、実際に私がWHERE =として設定したいもののリストボックスの選択した名前!

+0

あなたがここに意味「動かない」かについて、より明確にする必要があります。エラーはありますか?また、そのコードにはSQLインジェクションの脆弱性があります。 – JohnFx

+0

また、連結文字列の値を引用符で囲まず、Odedのようにパラメータ化されたクエリを使用すると、サイトが非常にハッカー可能であるという問題があります。 – JohnFx

+1

listbox1.SelectedVALUEまたはlistbox1.selectedItem.TEXTを使用する必要があります。あなたがそれらの文字列でない場合、それらのToString()をキャストすることができます。 – DOK

答えて

1

parameterized queryを使用します。

command.CommandText = "UPDATE characters SET nobless=1 WHERE char_name= @char_name" 
command.Parameters.AddWithValue("@char_name", listbox1.SelectedItem); 
+0

エラーはありませんが動作しません。実際に私はここにテキスト変数を追加する方法を知らない: – user1174925

+0

どこchar_name = textbox.1text – user1174925

+0

私はこれを何かしたいが、どのようにしたいですか? – user1174925