我正在编写一个数据库CRUD应用程序,并且在尝试将变量传递给数据库时遇到困难。当我将文字值传递给数据库时,应用程序工作正常,例如下面的代码:
myCommand.CommandText = "Select * From Customers Where CustomerID = 'ALFKI'";
但是,当我尝试从文本框中的文本创建变量时,应用程序将不会执行任何操作。它不会抛出错误,只是闲置。这是我用于变量的代码:
string searcher = Convert.ToString(txtSearch);
...
myCommand.CommandText = "Select * From Customers Where CustomerID = " + "'" + searcher + "'";
我在文本框中尝试了不同的CustomerID。我也尝试重新安排单引号和双引号的使用方式,但无济于事。有人可以帮我这个吗?
由于
**
谢谢Jon Skeet!你的方法很完美。达伦,谢谢你的意见。我将很快刷新参数化的sql语句,感谢给我另一个探索的前沿。
答案 0 :(得分:4)
你应该做的是使用参数化的sql语句。
试试以下
myCommand.CommandText = "Select * From Customers Where CustomerID = @CustomerId";
myCommand.Parameters.AddWithValue("@CustomerId", searcher);
答案 1 :(得分:1)
这一行
string searcher = Convert.ToString(txtSearch);
可能会将变量searcher
设置为System.Windows.Forms.TextBox, Text: Foo
您应该使用text属性
string searcher = txtSearch.Text;
仍然应该以Darren Kopp Suggested为例,并使用参数化查询来解决潜在的SQL注入攻击。它也使引用更容易