【问题标题】:ODP.NET can't read data from data readerODP.NET 无法从数据读取器读取数据
【发布时间】:2013-07-25 16:35:05
【问题描述】:

我是 Oracle 新手,正在尝试从 Oracle 数据库中获取数据。以下是我的代码。控制台中没有显示错误。但是在代码里面不会进入while循环。由于我是新手,请帮我解决这个问题?

public void Login()
        {
            using (OracleConnection connection = new OracleConnection())
            {
                connection.ConnectionString = ConnectionString;

                try
                {
                    LogManager.Info("inside login");
                    connection.Open();
                    OracleCommand cmd = connection.CreateCommand();
                    cmd.Connection = connection;

                    string sql = "select ID from APRV_EMPLOYEE where USERNAME = :username ";
                    LogManager.Info("sql" + sql);
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = sql;
                    cmd.BindByName = true;
                    cmd.Parameters.Add(":username", OracleDbType.NVarchar2).Value = "admin";
                    IDataReader reader = cmd.ExecuteReader();

                    LogManager.Info("Inside DatabaseManager::hasrows");
                    while (reader.Read())
                    {
                        LogManager.Info("Inside DatabaseManager::read" + reader.GetString(1));
                        LogManager.Info("Inside DatabaseManager::read2" + reader.GetString(reader.GetOrdinal("ID")));

                    }

                    reader.Dispose();
                    cmd.Dispose();
                }
                catch (Exception ex)
                {
                    LogManager.Error("Inside DatabaseManager::Login " + ex.Message);
                }
            }
        }

请帮帮我 提前致谢

【问题讨论】:

  • 你可能想试试cmd.Parameters.Add("username", OracleDbType.NVarchar2).Value = "admin";,我不记得:是否应该在那里。

标签: asp.net sql oracle odp.net


【解决方案1】:

看看docs,它应该是这样工作的

string sql = "select ID from APRV_EMPLOYEE where USERNAME = :1 ";
LogManager.Info("sql" + sql);
cmd.CommandType = CommandType.Text;
cmd.CommandText = sql;
// cmd.BindByName = true;
cmd.Parameters.Add("username", OracleDbType.NVarchar2).Value = "admin";
IDataReader reader = cmd.ExecuteReader();

【讨论】:

  • 即使“SELECT id from APRV_EMPLOYEE”总是返回 raeder.HasRows false 即使数据库中有条目..请帮助..
  • 在这种情况下,您是否连接到同一个数据库(在代码中与查询编辑器相比,您可以在其中查看记录)?
  • 谢谢.. 当我在 Oracle SQL developer 中尝试查询并运行查询时,它很好地显示了行。连接同一个数据库
  • @ramesh 您是否使用相同的凭据登录,以免最终进入单独的默认表空间?
  • @ramesh:那么,究竟是什么原因呢?如果 Joachim 的回答对您有所帮助,请不要接受此回答。谢谢。
猜你喜欢
  • 2014-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多