[英]Returning Int value from Oracle DB using C#
我正在嘗試使用 C# 從 Oracle 數據庫返回INTEGER
值,但它給了我以下異常
System.Data.dll 中發生類型為“System.InvalidCastException”的未處理異常
附加信息:指定的演員表無效。
誰能幫我解決這個問題?
這是我的代碼:
OleDbConnection con = new OleDbConnection(
"Provider=MSDAORA;Data Source=xe;User ID=hr; password=123");
con.Open();
String cmd1 =
@"select retail_price,purchase_price from
productdetails where item_name='" + textBox1.Text + "'";
OleDbCommand a1 = new OleDbCommand(cmd1, con);
OleDbDataReader myReader = a1.ExecuteReader();
if (myReader.Read())
{
int m = myReader.GetInt32(0);
MessageBox.Show("" +m);
}
首先,根據查詢
select retail_price,
purchase_price
from productdetails
where item_name = :item_name
retail_price
和purchase_price
的實際類型可以是某種浮點值類型( double
或decimal
;例如, 8.95$ == 8.95
):
decimal retail_price = Convert.ToDecimal(myReader[0]);
decimal purchase_price = Convert.ToDecimal(myReader[1]);
如果您堅持使用整數,請將它們四舍五入( 8.95$ == 8.95 -> 9
); 假設價格是非負的:
int retail_price = (int) (Convert.ToDouble(myReader[0]) + 0.5);
int purchase_price = (int) (Convert.ToDouble(myReader[1]) + 0.5);
發生的原因有幾個。
首先,您的價格字段可能是十進制的。 接下來,您可能需要在訪問閱讀器上的字段時更加明確。
嘗試:-
int purchasePriceint = Convert.ToInt32(myReader["purchase_price"]);
int retailPriceint = Convert.ToInt32(myReader["retail_price"]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.