簡體   English   中英

使用 C# 從 Oracle DB 返回 Int 值

[英]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_pricepurchase_price的實際類型可以是某種浮點值類型( doubledecimal ;例如, 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.

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