我通常在VB中做到這一點,它更容易,這是我第一次在C#中,我無法弄清楚。我只是想讀取一行,檢查其是否具有行和分配中存在的該列StockQuan
SQL查詢結果給變量?
public int StockQuan;
public int NewAmount;
public const string ConnectionStringToORACLE = "Provider=OraOLEDB.Oracle.1;Data Source=Souarce;User ID=user;Password=pass;";
public OleDbDataReader rowread;
public OleDbDataReader Read_quan(string txtPartNo, int txtAmount)
{
var conn = new OleDbConnection(ConnectionStringToORACLE);
conn.Open();
string query = "select QUANTITY_IN_STOCK from MPCS.SHOP_INV_STOCK where SI_KEY = ? AND LOCATION = ?";
var cmd = new OleDbCommand(query, conn);
cmd.Parameters.AddWithValue("SI_KEY", txtPartNo);
cmd.Parameters.AddWithValue("LOCATION", "HQ-TC");
//rowread = cmd.ExecuteReader();
//rowread.Read();
//if (rowread.HasRows)
//{
//while (rowread.Read())
//{
StockQuan = (int)cmd.ExecuteScalar();
//}
NewAmount = StockQuan - txtAmount;
//}
//else
//{
// MessageBox.Show("Error reading quantity. Check with Administrator", "Error", MessageBoxButton.OK, MessageBoxImage.Warning);
//}
return rowread;
}
我註釋掉大部分事物的數量,只是簡化我要去哪裏錯了,現在錯誤是(int)cmd.ExecuteScalar();
會發生什麼,如果你運行上面的代碼並沒有匹配的記錄(即返回0行)? – mjwills
_您執行SQL的方式確實有效,但您可以考慮使用輕量級的ORM,例如https://github.com/StackExchange/Dapper。它可能會讓你的生活變得更輕鬆一些._ – mjwills
DB中QUANTITY_IN_STOCK的類型是什麼? –