0

データベースからデータをフェッチするときに、データベースに D'DUN などの引用されたデータがあるかどうかについて質問があります。このデータは DB に挿入されます。次のような選択クエリを実行すると:

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

list_cutomer には D`DUN のように引用符のようにいくつかのデータが挿入されているデータがあります。そのため、unclosed Quotation のようなエラーが発生します。

すべてのフィールドに引用符が含まれているわけではないため、これはどのように解決されるのでしょうか。

私を助けてください.. 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 に答える