我只能从ODReader中获取一个值

时间:2014-10-27 14:41:17

标签: c# sql oracle

所以我创建了一个执行查询的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而不仅仅是第一套呢?

1 个答案:

答案 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++;
}