2012-01-30 120 views
0

你好我有1個執行問題。c#mysql連接

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 2012-01-30 21:01:16

+0

另外,問題是你沒有引用你的連接字符串中的值,但使用像Oded這樣的參數化查詢,否則你的網站是非常黑客的。 – JohnFx 2012-01-30 21:03:53

+1

您需要使用listbox1.SelectedVALUE或listbox1.selectedItem.TEXT。如果它們不是純文本字符串,則可以將它們強制轉換爲ToString()。 – DOK 2012-01-30 21:05:41

回答

1

使用parameterized query

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

沒有錯誤,但它不起作用。其實我不知道如何在這裏添加一個文本變量: – user1174925 2012-01-30 21:03:24

+0

其中char_name = textbox.1text – user1174925 2012-01-30 21:03:36

+0

我想這樣做,但如何? – user1174925 2012-01-30 21:03:45