IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]要求已打开且可用的 Connection。连接的当前状态为已关闭。

    testcs_dn发表于 2015-08-15 12:59:09
    love 0

    C#使用OleDB操作ACCESS
    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + NewFileName + “;User Id=uid;Jet OLEDB:Database Password=pwd;”;

    完整错误信息:
    {System.InvalidOperationException: ExecuteScalar 要求已打开且可用的 Connection。连接的当前状态为已关闭。
    在 System.Data.OleDb.OleDbConnection.CheckStateOpen(String method)
    在 System.Data.OleDb.OleDbCommand.ValidateConnection(String method)
    在 System.Data.OleDb.OleDbCommand.ValidateConnectionAndTransaction(String method)
    在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
    在 System.Data.OleDb.OleDbCommand.ExecuteScalar()
    在 Public.DB.CheckTableIfExist(String tablename, String condition) 位置 Public\DB.cs:行号 136
    在 MyIni.GetCompanyName() 位置 Program.cs:行号 293
    在 Program.Main() 位置 Program.cs:行号 734}

    错误原因:
    连接的当前状态为已关闭。或者只创建了Connection对象,没有调用
    Connection.Open()方法;
    也就是:connection.State != ConnectionState.Closed

    解决方法:
    调用Connection.Open()方法;
    或者添加判断,例如下面的代码:

     if (MyIni.Gs_con.State != ConnectionState.Closed)
     {
         OleDbCommand mysc = new OleDbCommand(sqltext, MyIni.Gs_con);
         //tools.MB(sqltext);
         result = tools.fieldnullint(mysc.ExecuteScalar());
         if (result == 0) return false;
     }


沪ICP备19023445号-2号
友情链接