6

我刚刚安装了一个 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? 我在SELECT与 Oracle express 一起安装的 commandprompt 工具中运行了相同的工具,它工作正常。

4

4 回答 4

5

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

于 2012-05-07T13:41:57.843 回答
2

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

于 2012-05-08T05:21:16.157 回答
1

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

于 2012-05-14T09:37:40.137 回答
1

派对迟到了,但是...

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

于 2012-10-03T14:57:13.027 回答