从WebAPI中的Oracle Query返回多行

时间:2015-05-14 18:47:32

标签: c# .net oracle asp.net-web-api

我试图返回数据库中的所有行或一定数量的行但是通过下面的查询它只返回第一行的第一列,并根据调试,它得到了然而,数据似乎并没有正确地存储它。它似乎不是dr.Read的问题,因为在我的调试停止点上,它显示了那时返回的数据。我是否使用MessageBox.Show错误地显示数据?

OracleCommand cmd = new OracleCommand();
            cmd.Connection = conn;
            cmd.CommandText = "select t2.meternumber, t1.blinkdate, t1.blinkcount from (select * from cecc_processed_blinks where trunc(blinkdate) between to_date('01-may-15', 'dd-mon-yy') and to_date('08-may-15', 'dd-mon-yy')) t1 left join meteraccts t2 on t1.serialnumber = t2.serialnumber order by t1.blinkdate desc";
            cmd.CommandType = CommandType.Text;
            OracleDataReader dr = cmd.ExecuteReader();
            dr.Read();
            //Put it in a message box...
            MessageBox.Show(dr.GetString(0), "Returned Results");
            conn.Dispose();

1 个答案:

答案 0 :(得分:0)

请参阅OracleDataReader上的文档:https://msdn.microsoft.com/en-us/library/system.data.oracleclient.oracledatareader.read%28v=vs.110%29.aspx

请注意,dr.Read()只读取一行数据,您需要以下内容:

while (dr.Read())
{
    // per row logic
}

另外在你的陈述中:

MessageBox.Show(dr.GetString(0), "Returned Results");

这只会显示从阅读器返回的行的第一列的MessageBox。 “0”是您的列索引。