从数据库中引用数据获取时出错

时间:2012-06-30 09:06:48

标签: c#

我有疑问,当我从数据库中获取数据时,如果在数据库中有一些引用的数据,例如D`DUN。此数据将插入DB中。当我执行选择查询时:

  Select city from glmast where glname='" + list_customer.Items[i].Value + "'
在list_cutomer中有一些数据,其中插入了一些数据,如D`DUN,如引号。所以它给出了像未公开的报价一样的错误。

所以,这将如何解决,因为并非所有字段都包含引号。

请帮帮我.. Mitesh

1 个答案:

答案 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
        }
    }
}