2011-04-18 42 views
0

我在網上搜索了很多,但沒有發現任何東西。 我插入記錄在oracle table.i ahev 2 column.1是長的,其他是int。 我的代碼是:c#oracledbtype.int16拋出的錯誤值爲int16雖然值是1或2的值太大或太小

   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它的工作原理fine.when id爲大於1,它給出誤差值過大或過小int16.Column數據類型爲int,存儲過程數據類型是也int。 請幫助別人

回答

0

Oracle int有多大?

Int16是.NET中的32767,而intInt32的別名,因此是32位和2,147,483,648。

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

我想你是發送一個Int32到一個Int16,該提供者可能無法處理。或者實際上它可以拋出。

如果Oracle int爲32位,則將值轉換爲Int16或將數據類型更改爲OracleDbType.Int32

+0

謝謝你的答覆。它工作時,我'oracom.Parameters.Clear();' – grishma 2011-04-20 07:00:13

+0

在執行查詢之前是否清除了'Parameters'集合?這基本上消除了參數,並使大部分代碼不必要。我不確定我是否理解你所做的。 – 2011-04-20 07:16:39

+0

執行查詢後刪除NO.i。 – grishma 2011-04-29 09:06:51

相關問題