首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OracleClient说我的连接关闭了

OracleClient说我的连接关闭了
EN

Stack Overflow用户
提问于 2015-03-25 16:28:31
回答 2查看 388关注 0票数 1

我有以下非常简单的代码:

代码语言:javascript
复制
    static void Main(string[] args)
    {
        using (OracleConnection conn = new OracleConnection("Data Source=tnsname;User Id=zzzz;Password=xxxx"))
        {
            using (OracleCommand cmd = new OracleCommand("SELECT * from CONTRACT"))
            {
                conn.Open();
                IDataReader reader = cmd.ExecuteReader();
            }
        }
    }
}

显然,我已经更改了连接字符串,但是如果连接字符串错误,则conn.Open()调用将失败,因此我知道连接字符串是正确的,至少就数据源、用户Id和密码而言。

但是,当它到达cmd.ExecuteReader()调用时,我得到一个带有消息Invalid operation. The connection is closed.InvalidOperationException

我在C#上做了很多Server方面的工作,但这是我第一次使用OracleClient。我看不出有什么明显的错误,除了它不受欢迎的事实,但我认为它仍然能发挥作用。我不是想写任何生产代码,我只是尝试做一个小的一次性测试。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-25 16:29:36

您还没有将连接对象与命令关联。

代码语言:javascript
复制
cmd.Connection = conn;

或者将其传递到命令构造函数中,如:

代码语言:javascript
复制
using (OracleCommand cmd = new OracleCommand("SELECT * from CONTRACT", conn))
票数 3
EN

Stack Overflow用户

发布于 2015-03-25 16:30:11

还没有将连接实例分配给OracleCommand实例

代码语言:javascript
复制
static void Main(string[] args)
{
    using (OracleConnection conn = new OracleConnection("Data Source=tnsname;User Id=zzzz;Password=xxxx"))
    {
        using (OracleCommand cmd = new OracleCommand("SELECT * from CONTRACT", conn))
        {
            conn.Open();
            using(IDataReader reader = cmd.ExecuteReader())
            {
                .....
            }
        }
    }
}

只需将conn实例添加到命令的构造函数中即可。

顺便说一句,读者也应该附在使用语句中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29261223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档