当我用c#编写web通过dop.net连接oracle的时候,页面提示
异常详细信息: System.InvalidOperationException: 必须为此操作打开连接源错误: 
行 55:  OracleCommand cmd = new OracleCommand(sql, conn);
行 56:  cmd.CommandType = CommandType.Text;
行 57:  OracleDataReader dr = cmd.ExecuteReader(); // C#
行 58:  //dr.Read();
行 59:  //TextBox1.Text = dr.GetString(0); // C# retrieve the first column in the select list
 源文件: f:\village\test.aspx.cs    行: 57 堆栈跟踪: 
[InvalidOperationException: 必须为此操作打开连接]
   Oracle.DataAccess.Client.OracleCommand.ExecuteReader(Boolean requery, Boolean fillRequest, CommandBehavior behavior) +702
   Oracle.DataAccess.Client.OracleCommand.ExecuteReader() +81
   village.test.Page_Load(Object sender, EventArgs e) in f:\village\test.aspx.cs:57
   System.Web.UI.Control.OnLoad(EventArgs e) +67
   System.Web.UI.Control.LoadRecursive() +35
   System.Web.UI.Page.ProcessRequestMain() +731 

解决方案 »

  1.   

    参看
    http://blog.csdn.net/knight94/archive/2006/04/15/664530.aspx
      

  2.   

    应该就是conn.open()没有打开.我以前也是碰到这问题的
      

  3.   

    已经确认过open()已经打开了
      

  4.   

    以越晚打开连接越好的原则,在ExecuteReader()刚刚之前打开连接吧。
    cmd.CommandType = CommandType.Text;
    conn.Open();//这样
    OracleDataReader dr = cmd.ExecuteReader();
      

  5.   

    调试的时候看到cmd.RowSize =0 ,是否如果没有记录的话,
    OracleDataReader dr = cmd.ExecuteReader();这句就会出现”System.InvalidOperationException: 必须为此操作打开连接 “这个错误。
      

  6.   

    你使用之前得conn.Open()一下啊,除了ExecuteDataSet等几个特殊的函数