未处理 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());
另外,长时间保持连接打开不是一个好习惯。 因此,请在操作完成后立即关闭连接。
我相信您的情况,如果您已经创建了具有相同 ConnectionString
的 OleDbConnection
对象,则无需一次又一次地重新分配相同的连接字符串。
【讨论】:
【参考方案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'类型的子类型发生在实例中