Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Oracle读取数据时遇到的问题_C#_Oracle_Oracle11g - Fatal编程技术网

C# 从Oracle读取数据时遇到的问题

C# 从Oracle读取数据时遇到的问题,c#,oracle,oracle11g,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("SE

我刚刚安装了一个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())
上,它只是退出,因为读卡器不保存任何数据。怎么了<代码>连接字符串?我在与Oracle express一起安装的commandprompt工具中运行了相同的
SELECT
,它工作正常。

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

表Persons是否在系统架构中?
运行另一个查询,如“从用户对象中选择对象名称”,并向我们提供您所做的更新。

我很久没有在.Net中使用Oracle了,但我看不到您使用的是哪个数据库(是“xe”?)。对于SQL Server,我使用连接字符串中的初始目录来指定它。这里您有不同的连接字符串要尝试:。我也会先打开连接。

派对有点晚,但


我在访问一个视图时遇到了同样的问题,结果证明它没有被授予相应的权限。一旦我将SELECT权限授予我的用户id,我就可以获取我的数据。

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