所以我创建了一个执行查询的ODReader,我从表中获取了某些valeus。 但是当我尝试在mbox中显示这些数据时(只是暂时)我只能显示第一个值。 一旦我尝试获取第二组值,它就会给我这个错误。对象引用没有设置为对象的实例。
代码如下
public void betaaldgroep()
{
List<int> groepsres = new List<int>();
OracleParameter[] Betaald = new OracleParameter[10];//moet flexibel worden gemaakt
OracleDataReader ODReader = DBConnection.Select("SELECT GROEPRESERVERING_ID,BETAALD FROM GROEPRESERVERING ", Betaald);
ODReader.Read();
for (int x = 0; x < 2; x++)
{
MessageBox.Show(ODReader["GROEPRESERVERING_ID"].ToString());
MessageBox.Show(ODReader["BETAALD"].ToString());
ODReader.NextResult();
}
}
现在我的问题是如何展示每一套valeus而不仅仅是第一套呢?
答案 0 :(得分:0)
ODReader.NextResult();
会从您的查询中返回下一个“结果集”。您的查询中只有一个SELECT
语句,因此最终会得到一个结果集。由于没有第二个结果集,当您尝试访问ODReader["GROEPRESERVERING_ID"].ToString()
时,会得到一个空引用异常。
您应该寻找的是从结果集中获取下一行。使用
ODReader.Read();
迭代到下一个结果集。如果您只想限制自己从结果集中读取两行,请使用:
OracleDataReader ODReader = DBConnection.Select("SELECT GROEPRESERVERING_ID,BETAALD FROM GROEPRESERVERING ", Betaald);
int counter = 0;
while (ODReader.Read() && counter < 2)
{
MessageBox.Show(ODReader["GROEPRESERVERING_ID"].ToString());
MessageBox.Show(ODReader["BETAALD"].ToString());
counter++;
}