1

VB.Net の使用

テーブルの行がnullか0かを確認したい

コード

 sCmd = New SqlCommand("SELECT * from table1)", conObjects.myConnection)
        dReader = sCmd.ExecuteReader
        While dReader.Read()
 If dReader.Item(11) <> "0" And dReader.Item(11) IsNot Nothing Then
msgbox ("Not NUll or 0")
End if
End while

エラーを " Operator '<>' is not defined for type 'DBNull' and string "0""として表示

このエラーが発生する理由、この問題を解決する方法。

VB.Net コードのヘルプが必要

4

4 に答える 4

3

AndAlsoandOrElseの代わりにAndandを常に使用する必要がありOrます。AndAlso後者の式は、前者が を返した場合にのみ評価されますtrue。このようにして、例外を回避し、コードをより効率的にすることができます。

しかし、それとは別に、次を使用する必要がありますreader.IsDBNull(index)

If Not dReader.IsDBNull(11) AndAlso dReader.GetString(11) <> "0" Then

End If
于 2012-10-18T08:17:26.930 に答える
0
If Convert.ToString(dReader.Item(11)) <> "0" AndAlso dReader.IsDBNull(11)=False
于 2012-10-18T08:28:09.600 に答える
0

ここには 2 つの問題がありAndます。AndAlsoTrue

2番目の問題は、「Nothing」をチェックする前に「not zero」をチェックすることです。そのため、2番目の部分が評価される前に最初の部分が失敗する可能性があります。

代わりにこれを試してください:

If dReader.Item(11) IsNot Nothing AndAlso dReader.Item(11) <> "0" Then

また、久しぶりにADOをやったのですがIsDbNull、比較ではなくチェックでいいのではないでしょうNothingか?おそらくVBがそれを処理してくれると思いますが、私にはわかりません。

于 2012-10-18T08:19:08.150 に答える
0

使ってみてAndAlso

If (dReader.Item(11) IsNot Nothing) AndAlso (cint(dReader.Item(11)) <> 0) Then
    msgbox ("Not NUll or 0")
End if

基本的には、最初の式が既にtrueの場合、2 番目の式は評価されません。

于 2012-10-18T08:15:37.697 に答える