我有疑问,当我从数据库中获取数据时,如果在数据库中有一些引用的数据,例如D`DUN。此数据将插入DB中。当我执行选择查询时:
Select city from glmast where glname='" + list_customer.Items[i].Value + "'
在list_cutomer中有一些数据,其中插入了一些数据,如D`DUN,如引号。所以它给出了像未公开的报价一样的错误。
所以,这将如何解决,因为并非所有字段都包含引号。
请帮帮我.. Mitesh
答案 0 :(得分:2)
在构建SQL查询时,切勿使用字符串连接。您应该使用参数化查询。您的代码不仅会像您所描述的那样在情境中中断,更糟糕的是,您的代码容易受到SQL injection的攻击,如果您的应用程序落入恶意用户的手中,您的数据库将被破坏。
参数化查询:
string sql = "SELECT city FROM glmast WHERE glname = @glname";
using (var conn = new SqlConnection("Some connection string"))
using (var cmd = conn.CreateCommand())
{
conn.Open();
cmd.Parameters.AddWithValue("@glname", list_customer.Items[i].Value);
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
// do something with the results
}
}
}