我有以下非常简单的代码:
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。我看不出有什么明显的错误,除了它不受欢迎的事实,但我认为它仍然能发挥作用。我不是想写任何生产代码,我只是尝试做一个小的一次性测试。
发布于 2015-03-25 16:29:36
您还没有将连接对象与命令关联。
cmd.Connection = conn;或者将其传递到命令构造函数中,如:
using (OracleCommand cmd = new OracleCommand("SELECT * from CONTRACT", conn))发布于 2015-03-25 16:30:11
还没有将连接实例分配给OracleCommand实例
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实例添加到命令的构造函数中即可。
顺便说一句,读者也应该附在使用语句中。
https://stackoverflow.com/questions/29261223
复制相似问题