从Oracle读取的问题

时间:2012-05-04 13:23:57

标签: c# oracle oracle11g

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

4 个答案:

答案 0 :(得分:5)

当连接到任何系统时,首先要做的是查看/测试是否成功,然后继续。如果没有这些简单的测试,你的应用程序必然会像定时炸弹一样。一些防御性编程将使您的项目更容易调试。 不是你要找的答案,但目前查询执行时的连接状态并不清楚。

答案 1 :(得分:2)

Table Persons是否在SYSTEM架构中? 运行另一个查询,例如“从user_objects中选择object_name”,并向我们提供您已完成的更新。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

参加晚会但是......

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