1

using顧客番号の検証にステートメントを使用しています。

using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
{
    connection.Open();

    using (SqlCommand cmdCheck = new SqlCommand("SELECT COUNT(CUSTOMER_NO) FROM WEBSITE_CUSTOMERS WHERE UPPER(CUSTOMER_NO) = '" + strCustomer.Trim().ToUpper() + "';", connection))
    {
        int nExists = (int)cmdCheck.ExecuteScalar();
        if (nExists > 0) 
            return true;
        else
            return false;
    }
}

これは、以前にスタックオーバーフローで既存のレコードをチェックするようにアドバイスされたコードです...うまく機能しますが、この変数はフォームから入力されるため、顧客番号にパラメーターを使用できる方法があるかどうかを知りたいです、注射から守りたい。このようなステートメントのcmdCheck場合、どこにパラメーターを作成しますか?using

4

1 に答える 1

5

コマンドを初期化した後、パラメーターを追加します。便利な方法はAddWithValue次のとおりです。

const string sql = @"SELECT 
                        COUNT(CUSTOMER_NO) 
                     FROM 
                        WEBSITE_CUSTOMERS 
                     WHERE 
                        UPPER(CUSTOMER_NO) = @CUSTOMER_NO;";

using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
{
    using (SqlCommand cmdCheck = new SqlCommand(sql, connection))
    {
        cmdCheck.Parameters.AddWithValue("@CUSTOMER_NO", strCustomer.Trim().ToUpper());
        connection.Open();
        int nExists = (int)cmdCheck.ExecuteScalar();
        return nExists > 0;
    }
}
于 2013-01-04T09:08:24.357 に答える