0

我将表列设置为整数。现在我正在尝试使用 getint32 在我的 c# 代码中读取它,由于某种原因,我得到了一个转换错误,当我检查更多时,我发现我从我的数据库中得到了一个小数。这个怎么可能?oracle整数不等于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

你不应该那样做。

( int)System.Int32不足以容纳所有可能的decimal值。如果您的列类型是decimal,使用GetDecimal()方法,如果您的列类型是int,使用GetInt32()方法。

根本没有隐含decimal的对话int

于 2013-07-24T10:30:30.720 回答
1

阅读以下内容:

哪种 .NET 数据类型最适合在 NHibernate 中映射 NUMBER Oracle 数据类型?

Oracle 编号映射到 .net 十进制。Microsoft 已意识到此问题。

于 2013-07-24T10:43:39.160 回答