日期:2014-05-17  浏览次数:21072 次

Oracle和C#数据类型问题
表结构

CREATE TABLE "HY-WYH"."TEST_TABLE" 
   ( "ID" NUMBER(*,0), 
"NAME" VARCHAR2(4000 CHAR)
   )

修改代码

OracleConnection conn = new OracleConnection(GetConnectString());
OracleCommand cmd = conn.CreateCommand();
conn.Open();
cmd.CommandType=System.Data.CommandType.Text;
cmd.Parameters.Add(new OracleParameter("ID",OracleDbType.Int64)); // ID应该选什么类型
cmd.Parameters.Add(new OracleParameter("NAME", OracleDbType.Varchar2));
cmd.Parameters["ID"].Value=ID;
cmd.Parameters["NAME"].Value=Name;
cmd.CommandText="UPDATE TEST_TABLE SET \"NAME\"=:NAME WHERE \"ID\" = :ID";
//执行时引发如下异常
//Oracle.DataAccess.Client.OracleException ORA-01722: invalid number
int res = cmd.ExecuteNonQuery();

oracle c# 数据类型 Number

------解决方案--------------------
得到的id不是number型?
------解决方案--------------------
引用:
OracleDbType中没有Number类型,只有Decimal,即使上面将ID参数代码改为Decimal类型,也不行。

Id有值吗,是不是空啊
------解决方案--------------------
Int32就可以了,number默认8位