私のサイトのある領域では、特定のユーザーセットへのアクセスを制御する必要があります。
これは、SQLサーバーデータベース上のテーブルに対してユーザーのIDをチェックすることによって行われます。IDが存在する場合、アクセスが許可されます。
SELECT 1 FROM admin WHERE userID = @userID
データベース内の行の存在を確認する方法がいくつかあることに気付き、どちらかを使用することの利点があるのか、それとも標準があるのか疑問に思いました。
SqlDataReader
1つ目は、 :に行が存在するかどうかを確認することです。
if (!SqlCommand.ExecuteReader().HasRows)
{
//redirect
}
2つ目は、戻り値が以下DBNull
を使用しているかどうかを確認することExecuteScalar()
です。
if (SqlCommand.ExecuteScalar() is DBNull)
{
//redirect
}
どちらを使うべきですか?もっと良い方法はありますか?それは本当に重要ですか?