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

System.InvalidCastException:オブジェクトをDBNullから他のタイプにキャストすることはできません

    エラーメッセージに示されているように、セルの値はDBNull.Valueです。 そして、それからあなたが望むもの(この場合はlong)に変換することはできません またはint )。 DBNullを確認する必要があります 数値を変換/キャストする前:

    Int64 id_riga = 0;
    object value = (sender as DataGridView).Rows[e.RowIndex].Cells["column_ID"].Value;
    if(value != DBNull.Value) 
        id_riga = Convert.ToInt64(value);
    

    これにより煩わしいオーバーヘッドが追加されるため、これだけ行う場合は、それを実行するヘルパーメソッドを作成することをお勧めします。

    public static long? getLongFromDB(object value)
    {
        if (value == DBNull.Value) return null;
        return Convert.ToInt64(value);
    }
    

    次に、コードは次のようになります。

    Int64 id_riga = getLongFromDB((sender as DataGridView).Rows[e.RowIndex].Cells["column_ID"].Value)
        .GetValueOrDefault();
    


    1. PythonでMySQLデータベースに挿入した後にIDを取得するにはどうすればよいですか?

    2. 顧客データと注文データを組み合わせるための3番目のレポートを取得する方法

    3. 文字列またはバイナリデータが切り捨てられるのをデバッグする良い方法はありますか?

    4. MySQLを保護する方法:パート1