未处理 InvalidOperationException 不允许更改“ConnectionString”属性。在 C# 上

Posted

技术标签:

【中文标题】未处理 InvalidOperationException 不允许更改“ConnectionString”属性。在 C# 上【英文标题】:InvalidOperationException was unhandled Not allowed to change the 'ConnectionString' property. On C# 【发布时间】:2012-10-18 03:39:46 【问题描述】:

虽然语法正确,但我遇到了这种错误,并且遇到了 InvalidOperationExeption。

关于我在类 dbs 上的 konek 函数

public String konek()

            connectionString = "Provider=" + OleDBProvider + ";Data Source=" + OleDBDataSource + ";JET OLEDB:Database Password=" + OleDBPassword + ";Persist Security Info=" + PersistSecurityInfo + "";
            return connectionString;

【问题讨论】:

最好将代码粘贴到问题内容而不是图像上。 【参考方案1】:

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

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

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

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

【讨论】:

【参考方案2】:

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

using (OleDbConnection connection = new OleDbConnection(db.konek()))

   try
   
       connection.Open();
       ....
       ....
   
   catch (Exception ex)
   
       ....
   

【讨论】:

【参考方案3】:

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

using (OleDbConnection con = new OleDbConnection())

    con.ConnectionString = db.konek();

尽可能缩小范围。

【讨论】:

【参考方案4】:

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

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

if(con.State!=ConnectionState.Open)

con.ConnectionString = db.Konek();

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

【讨论】:

以上是关于未处理 InvalidOperationException 不允许更改“ConnectionString”属性。在 C# 上的主要内容,如果未能解决你的问题,请参考以下文章

Firestore:如何设置 GOOGLE_APPLICATION_CREDENTIALS?

SqlDataAdapter#Fill:`SelectCommand.connection` 属性尚未初始化

Flutter fromJson - 未处理的错误未处理的错误类型'String'不是'int'类型的子类型发生在实例中

未处理的拒绝(错误)reducer 返回未定义

在 mvc 中处理请求时发生未处理的异常

Swift 错误未处理且未标有 try