0

尽管语法正确并且遇到了 InvalidOperationExeption,但我遇到了这种错误。 截图示例

在我的 dbs.cs 课上

在类 dbs 上我的 konek 函数

public String konek()
{
            connectionString = "Provider=" + OleDBProvider + ";Data Source=" + OleDBDataSource + ";JET OLEDB:Database Password=" + OleDBPassword + ";Persist Security Info=" + PersistSecurityInfo + "";
            return connectionString;
}
4

4 回答 4

1

您必须创建新的 OleDbConnection 对象,而不是重用现有的对象。

OleDbConnection = new OleDbConnection(db.konek());

此外,长时间保持连接打开也不是一个好习惯。因此,请在操作完成后立即关闭连接。

我相信在您的情况下,如果您已经创建了OleDbConnection相同的对象,ConnectionString则无需一次又一次地重新分配相同的连接字符串。

于 2012-10-18T03:51:28.967 回答
0

您不允许修改连接字符串属性。试试下面的模板:

using (OleDbConnection connection = new OleDbConnection(db.konek()))
{
   try
   {
       connection.Open();
       ....
       ....
   }
   catch (Exception ex)
   {
       ....
   }
}
于 2012-10-18T03:55:19.833 回答
0

也许可能是该con对象已经Open导致它是只读的。解决此问题的一种方法是为您的Connection对象创建另一个实例。

using (OleDbConnection con = new OleDbConnection())
{
    con.ConnectionString = db.konek();
}

尽可能缩小范围。

于 2012-10-18T03:56:35.707 回答
0

正如例外所说,您的“骗局”已经打开了连接。

您可能希望重新使用现有连接或仅在连接未打开时替换:

if(con.State!=ConnectionState.Open)
{
con.ConnectionString = db.Konek();
}

但是在连接字符串已经有值并且打开时修改它,表明您的代码逻辑存在一些缺陷。

于 2012-10-18T03:56:35.910 回答