0

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

  Select city from glmast where glname='" + list_customer.Items[i].Value + "'

在 list_cutomer 中有一些数据,其中插入了一些数据,如 D`DUN,如引号。所以它给出了像未封闭的报价一样的错误。

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

请帮帮我.. Mitesh

4

1 回答 1

2

在构建 SQL 查询时,您永远不应该使用字符串连接。您应该使用参数化查询。不仅您的代码会在您所描述的情况下中断,而且更糟糕的是,您的代码容易受到SQL 注入的攻击,如果您的应用程序落入恶意用户的手中,您的数据库将被破坏。

所以参数化的查询:

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
        }
    }
}
于 2012-06-30T09:08:53.060 回答