首页 > 解决方案 > C# Core,OracleDataReader,hasRows 为 false,同时选择表中包含数据的所有行

问题描述

我正在测试 Oracle 数据库。我写了一些代码,但我的数据阅读器没有行,为什么?我的“carros”表有数据,我选择了所有数据,但似乎得到了一个空的结果集。

            string constr = "Data Source=localhost:1521/XE;User Id=System;Password=password;";
            OracleConnection con = new OracleConnection(constr);


            OracleCommand oracleCommand = new OracleCommand();

            oracleCommand.Connection = con;
            oracleCommand.CommandText = "select preco from carro";
            con.Open();
            OracleDataReader oracleDataReader = oracleCommand.ExecuteReader();


            string resultado = String.Empty;

            //My test, I got hasRows as false
            if (oracleDataReader.HasRows == false)
            {
                resultado = "no results";
            }        

           //never enters this loop.
            while (oracleDataReader.Read())
            {
                resultado += (string)oracleDataReader["preco"];

            }


            // Close and Dispose OracleConnection
            con.Close();
            con.Dispose();

            return resultado;

标签: oracleasp.net-coreoracle-manageddataaccess

解决方案


如果在 ExecuteReader 之后 HasRows 为 false,则问题只是查询没有返回任何行,因此 Read 也将返回 false。可能 someValue 变量设置不正确。

根据您的描述,您的表似乎是carros在您的查询使用时命名的carro。尝试使用

oracleCommand.CommandText = "select preco from carros";

推荐阅读