sql >> データベース >  >> RDS >> Oracle

DataReader値がnullでないかどうかを確認するにはどうすればよいですか?

    Nothing オブジェクトが初期化されていないことを意味します。DBNull データが定義されていない/欠落していることを意味します。確認する方法はいくつかあります:

    ' The VB Function
    If IsDBNull(Reader.Item(0)) Then...
    

    GetDateTime 非値をDateTimeに変換するように要求しているため、このメソッドには問題があります。 Item() に簡単にテストできるオブジェクトを返します 変換します。

     ' System Type
     If System.DBNull.Value.Equals(...)
    

    DbReaderもできます。これは、列名ではなく、序数インデックスでのみ機能します:

    If myReader.IsDbNull(index) Then 
    

    これに基づいて、Sharedクラスのメンバーとして関数をまとめるか、Extensionsに作り直して、DBNullをテストし、デフォルト値を返すことができます。

    Public Class SafeConvert
        Public Shared Function ToInt32(Value As Object) As Integer
            If DBNull.Value.Equals(Value) Then
                Return 0
            Else
                Return Convert.ToInt32(Value)
            End If
        End Function
    
        Public Shared Function ToInt64(Value As Object) As Int64
            If DBNull.Value.Equals(Value) Then
                Return 0
            Else
                Return Convert.ToInt64(Value)
            End If
        End Function
    
        ' etc
    End Class
    

    使用法:

    myDate = SafeConvert.ToDateTime(Reader.Item(0))
    

    DateTimeコンバーターの場合、何を返すかを決定する必要があります。私はそれらを個別に行うことを好みます。



    1. Azure仮想マシンのAMDEPYCプロセッサ

    2. ClusterControlを使用してハイブリッドクラウドMySQLデータベースをデプロイする

    3. Debian 6でMySQLリレーショナルデータベースを使用する(Squeeze)

    4. Oracleにスクリプトを介して挿入するより速い方法は?