![](/img/trans.png)
[英]Oracle with EntityFramework cause OverflowException: Value was either too large or too small for an Int16
[英]c# oracledbtype.int16 throws error as value either too large or too small for int16 though value is 1 or 2
我在網上搜索了很多,但沒有發現任何東西。 我在oracle table.i中插入記錄ahev 2 column.1很長,其他是int。 我的代碼是:
Oracle.DataAccess.Client.OracleParameter param1 = new Oracle.DataAccess.Client.OracleParameter();
param1.Direction = ParameterDirection.Input;
param1.ParameterName = "INCONTENT";
param1.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Long;
param1.Value = dt.Rows[i]["Content"].ToString();
//System.Data.OracleClient.OracleParameter param2 = new System.Data.OracleClient.OracleParameter();
Oracle.DataAccess.Client.OracleParameter param2 = new Oracle.DataAccess.Client.OracleParameter();
param2.Direction = ParameterDirection.Input;
param2.ParameterName = "INID";
param2.OracleDbType = OracleDbType.int16;
//param2.Value = 7;
param2.Value = dt.Rows[i]["ID"];
oracom.Parameters.Add(param1);
oracom.Parameters.Add(param2);
oracom.ExecuteNonQuery();
當id為1時,它工作正常。當id大於1時,它會給出錯誤,因為int16的值太大或太小。Column數據類型為int,存儲的proc數據類型也為int。 請幫助某人
Oracle int有多大?
Int16
在.NET中為32,767,而int
是Int32
的別名,因此為32位和2,147,483,648。
當您寫var i = 1;
,變量i
是Int32
。
我認為您正在將Int32
發送到Int16
,提供程序可能無法處理。 或者實際上可以,因為它拋出了。
如果Oracle int是32位, OracleDbType.Int32
值強制轉換為Int16
或將數據類型更改為OracleDbType.Int32
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.