0

テーブルの列を整数として設定しました。今、getint32 を使用して C# コードでそれを読み込もうとしていますが、何らかの理由でキャスト エラーが発生しました。それはどうしてですか?オラクルの整数は c# の int と同じではありませんか?

using (OracleCommand cmd = new OracleCommand(@"select id,title from table"))
{
    cmd.Connection = _conn;
    OracleDataReader r = cmd.ExecuteReader();

    while (r.Read())
    {
        Debug.WriteLine(reader.GetFieldType(0)); // <--decimal
        //reader.GetDecimal(0);
        reader.GetInt32(0); <---cast error
        Debugger.Break();
    }
    r.Close();
 }

id 列は整数として設定され、数値も試行されます。混乱した:S

4

2 に答える 2

1

あなたはそれをすべきではありません。

( ) はintSystem.Int32考えられるすべての値を保持するには十分な大きさではありませんdecimal。列タイプが の場合はメソッドをdecimal使用し、列タイプが の場合はメソッドを使用します。GetDecimal()intGetInt32()

暗黙の会話は一切ありませdecimalint

于 2013-07-24T10:30:30.720 に答える