从OracleDataReader获取数字

时间:2015-03-21 17:38:07

标签: c# oracle

我试图从oracal数据库中获取数据,其中一个表的列是NUMBER(4,0)。如何从c#...

中的数据库中获取此数据类型

这是我试图编译的示例代码

 ArrayList ListofSaleno = new ArrayList();
            OleDbConnection con = new OleDbConnection();
            con.ConnectionString = "Provider=MSDAORA;Data Source=orcl;Persist Security Info=True;User ID=thara;password=12";
            con.Open();
            OleDbCommand cmd = new OleDbCommand("select saleno from transaction_file_com01 where selrcd ='"+userID+"'", con);
            OleDbDataReader dr = cmd.ExecuteReader();

            if (dr.HasRows)
            {
                while (dr.Read())
                {
                    ListofSaleno.Add(dr.GetInt32(o));//Error line
                }
            }
            dr.Close();
            con.Dispose();
            return (ListofSaleno);

但它会引发错误.. System.InvalidCastException:指定的强制转换无效。

任何能帮助我的人???谢谢

1 个答案:

答案 0 :(得分:5)

首先,您应该正确键入列表。而不是ArrayList,请使用List<decimal>

Oracle number表示为C#中的decimal,因此请使用:

dr.GetDecimal(0)

根据返回的数据的比例和精度,您可能需要(不是在这种情况下)dr.GetOracleNumber并自己提取值。