2013-07-25 62 views
0

我正在使用訪問數據庫,當我嘗試執行此代碼時,它得到「沒有數據存在的行/列,我在Microsoft Access中執行了SQL代碼,它工作正常。C#沒有數據存在的行/列

OleDbCommand cmd1 = new OleDbCommand("SELECT SUM (adet) AS gToplam from stok_isl WHERE stok_id = @veri and tur = 'GİRİŞ'", conn); 
cmd1.Parameters.AddWithValue("@veri", combo); 
OleDbDataReader dr1 = cmd1.ExecuteReader(); 


OleDbCommand cmd2 = new OleDbCommand("SELECT SUM (adet) AS cToplam from stok_isl WHERE stok_id = @veri and tur = 'ÇIKIŞ'", conn); 
cmd2.Parameters.AddWithValue("@veri", combo); 
OleDbDataReader dr2 = cmd2.ExecuteReader(); 


Sonuc = Convert.ToDouble(dr1["gToplam"]) - Convert.ToDouble(dr2["cToplam"]); 

MessageBox.Show(Sonuc.ToString()); 

回答

2

由於要檢索的一個數字,ExecuteScalar似乎是你更好的選擇:

... 
double gToplam = (double)cmd1.ExecuteScalar(); 
... 
double cToplam = (double)cmd2.ExecuteScalar(); 

Sonuc = gToplam - cToplam; 

但是你仍然可以使用,當然ExecuteReader獲得通過的問題是,你沒有。調用Read(見this page例如使用方法)來讀取結果集的第一行:

... 
OleDbDataReader dr1 = cmd1.ExecuteReader(); 
dr1.Read(); 
... 
OleDbDataReader dr2 = cmd2.ExecuteReader(); 
dr2.Read(); 

請注意,這兩個示例代碼不檢查的情況時,查詢將返回空的結果。

+0

非常感謝您的解決方案 –

相關問題