【问题标题】:Problems reading from Oracle从 Oracle 读取的问题
【发布时间】:2012-05-14 01:14:06
【问题描述】:

我刚刚安装了一个 Oracle express 数据库,并试图从我放入的表中读取一些数据:

using (OracleConnection conn = new OracleConnection("Data Source=localhost:1521/xe;Persist Security Info=True;User ID=SYSTEM;Password=SYSTEMPASSWORD"))
{
    OracleCommand command = new OracleCommand("SELECT * FROM Persons WHERE Firstname = 'John'", conn);
    conn.Open();
    OracleDataReader reader = command.ExecuteReader();

    try
    {
        while (reader.Read())
        {
            string strResult = reader.GetString(0);
        }
    }
    catch (OracleException oex)
    {
        MessageBox.Show(oex.Message, "Oracle error");
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "Error");
    }
    finally
    {
        reader.Close();
    }
} 

while (reader.Read()) 上它只是退出,因为阅读器不保存任何数据。怎么了? Connectionstring?我在与 Oracle express 一起安装的命令提示符工具中运行了相同的 SELECT,它工作正常。

【问题讨论】:

  • 您确定连接已正确打开并且 ExecuteReader 可以正常工作吗?您是否在赋值之后和进入 while 循环之前放置了断点并检查了 reader 对象的值?
  • 如果您将在 sqlplus 或任何其他工具中运行,此选择是否返回任何行?
  • @Jason94 永远不要捕获 System.Exception - 它可能是 OutOfMemoryException 或 StackOverflowException,这可能会在以后导致意外的副作用。
  • 天啊所有这些愚蠢的建议,将OracleDataReader reader = command.ExecuteReader(); 放入 Try-Catch 并告诉我们异常消息,或者如果它是第二次机会异常,则告诉我们错误代码......
  • 我不明白为什么你会提供赏金而不回应评论中的问题或答案中的建议。

标签: c# oracle oracle11g


【解决方案1】:

连接到任何系统时要做的第一件事是查看/测试它是否成功,然后继续。如果没有这些简单的测试,您的应用程序必然会表现得像一颗定时炸弹。一些防御性编程将使您的项目更容易调试。 不是您正在寻找的答案,但目前在查询执行时连接状态尚不清楚。

【讨论】:

    【解决方案2】:

    Table Persons 在 SYSTEM 模式中? 运行另一个查询,例如“从 user_objects 中选择 object_name”,然后向我们提供您所做的更新。

    【讨论】:

    • 或者只执行 SELECT * FROM DUAL
    【解决方案3】:

    自从我不将 Oracle 与 .Net 一起使用以来已经很长时间了,但我看不到您使用的是哪个数据库(是“xe”吗?)。对于 SQL Server,我在连接字符串中使用 INITIAL CATALOG 指定它。在这里,您可以尝试不同的连接字符串:http://www.connectionstrings.com/oracle。我也会先打开连接。

    【讨论】:

      【解决方案4】:

      聚会迟到了,但是……

      我在访问视图时遇到了同样的问题,结果发现没有授予它适当的权限。一旦我将 SELECT 权限授予我的用户 ID,我就可以获取我的数据。

      【讨论】:

        猜你喜欢
        • 2015-10-17
        • 2011-09-04
        • 1970-01-01
        • 1970-01-01
        • 2021-03-02
        • 1970-01-01
        • 1970-01-01
        • 2016-07-27
        • 2022-01-18
        相关资源
        最近更新 更多