使用OracleDataReader获取Count(*)的值

时间:2015-07-10 08:55:38

标签: c# database oracle

我无法读取oracle表中的行数。正如您在图片中看到的那样,我得到了正确的值(2.007.191),但无法在ListView中保护它。

enter image description here

我已经尝试了Int64Int64 count2 = (Int64) command.ExecuteScalar();以及Int64 test2 = reader.GetInt64(0);,但总是得到错误

  

System.InvalidOperationException:由于对象的当前状态,操作无效。在Oracle.DataAccess.Client.OracleDataReader.GetInt64(Int32 i)

我做错了什么?感谢

3 个答案:

答案 0 :(得分:2)

在阅读之前,您应该检查读者是否有价值:

if(reader.Read())
{
    long test2 = Convert.ToInt64(reader[0]);
}

答案 1 :(得分:0)

在您真正尝试获取值之前,数据阅读器首先要求您Read

所以你应该从:

开始
long test2;
if (reader.Read())
{
    // read the first and only line
    test2 = reader.GetInt64(0);
}
else
{
    test2 = 0;
}

通常使用数据阅读器,您会期望多行,您可以使用while的{​​{1}} insteaf。

对于if来电,您可能需要ExecuteScalar

Convert.ToInt64

答案 2 :(得分:0)

我觉得有用的是<div class="homepage-video"> <video autoplay loop muted> <source src="https://player.vimeo.com/external/208845912.hd.mp4?s=2c04fe329c04029926a99943f076c84c6b86bb46&profile_id=119" type="video/mp4"> </video> <div class="text-over-video"> <h1>HEADING TEXT GOES HERE</h1> </div> </div> 那么你可以发现测试的类型。