从OracleDataReader获取数字

gam*_*mal 2 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);
Run Code Online (Sandbox Code Playgroud)

但它会抛出错误.. System.InvalidCastException:指定的强制转换无效.

任何人都可以帮助我??? 谢谢

Pat*_*man 5

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

Oracle 在C#中number表示为decimal,所以使用:

dr.GetDecimal(0)
Run Code Online (Sandbox Code Playgroud)

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