0

我正在使用 Microsoft Access 数据库。当我尝试执行代码时,它得到“行/列不存在数据”。我在 Microsoft Access 中执行了 sql 代码,它工作正常。

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());
4

1 回答 1

1

由于您只检索一个数字,因此ExecuteScalar对您来说似乎是一个更好的选择:

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

Sonuc = gToplam - cToplam;

但是,您当然仍然可以接受ExecuteReader。问题是您没有调用Read(有关用法示例,请参阅此页面)方法来读取结果集的第一行:

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

请注意,这两个代码示例都不会检查查询返回空结果的情况。

于 2013-07-25T07:52:45.210 回答