簡體   English   中英

C#oracledbtype.int16拋出錯誤,因為值對於int16而言太大或太小,盡管值是1或2

[英]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,而intInt32的別名,因此為32位和2,147,483,648。

當您寫var i = 1; ,變量iInt32

我認為您正在將Int32發送到Int16 ,提供程序可能無法處理。 或者實際上可以,因為它拋出了。

如果Oracle int是32位, OracleDbType.Int32值強制轉換為Int16或將數據類型更改為OracleDbType.Int32

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM