2012-01-30 81 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