2

このSQLクエリを取得しました:

Select EmployeeDesignation from Employee where EmployeeName = Paramater1 

(Parameter1は値がこれに渡されます)

次のステートメントを使用しています。lEmployeeDesignation=_SQLCommand.ExecuteScalar()

3つのシナリオ:

  1. 従業員の指定を返します(レコードはテーブルに存在します)
  2. Parameter1のデータベースに値が設定されていないため、NULLを返す必要があります(レコードは存在しますが、値はありません)
  3. 従業員レコードが存在しないため、何も返されません(レコードは存在しません)

私は2と3のシナリオで苦労しています-シナリオ3の場合、アプリケーションを失敗させたいのですが、このエラーをトラップする方法で苦労しています。よろしく

4

2 に答える 2

1
lEmployeeDesignation = _SQLCommand.ExecuteScalar()
if lEmployeeDesignation IsNot Nothing AndAlso lEmployeeDesignation <> DBNull.Value then
    ' you have found your data....' 
Else
    if lEmployeeDesignation = DBNull.Value then
       ' you have a record for parameter1 but EmployeeDesignation field is null'
    End If
End If

AndAlsoを使用して評価プロセスを短縮していることに注意してください。最初の条件がfalseの場合、2番目の条件は評価されません

于 2012-12-10T09:41:57.553 に答える
0

あなたは完全にヌルを排除することができます...

Select IsNull(Max(EmployeeDesignation),0) from Employee where EmployeeName = Paramater1

それはひどく良いことではありませんが、それはうまくいきます、そしてあなたがそれらの多くをしていなければそれは大丈夫でしょう。

また、Count(EmployeeDesignation)= 0を入力して、シナリオ3を確認することもできますが、もちろんこれは同じクエリでは実行できないか、リーダーを使用する必要があります。

于 2012-12-10T10:45:35.307 に答える