虽然语法正确并且遇到InvalidOperationExeption,但我有这种错误。
关于班级dbs上的konek功能
public String konek()
{
connectionString = "Provider=" + OleDBProvider + ";Data Source=" + OleDBDataSource + ";JET OLEDB:Database Password=" + OleDBPassword + ";Persist Security Info=" + PersistSecurityInfo + "";
return connectionString;
}
答案 0 :(得分:1)
您必须创建新的OleDbConnection对象,而不是重用现有的对象。
OleDbConnection = new OleDbConnection(db.konek());
此外,长时间保持连接打开并不是一个好习惯。 因此,请在操作完成后立即关闭连接。
我相信您的情况,如果您已经使用相同的OleDbConnection
创建了ConnectionString
对象,则无需一次又一次地重新分配相同的连接字符串。
答案 1 :(得分:0)
您不允许修改连接字符串属性。尝试下面的模板:
using (OleDbConnection connection = new OleDbConnection(db.konek()))
{
try
{
connection.Open();
....
....
}
catch (Exception ex)
{
....
}
}
答案 2 :(得分:0)
也许可能是con
对象已经Open
导致它只读。解决此问题的一种方法是为Connection
对象创建另一个实例。
using (OleDbConnection con = new OleDbConnection())
{
con.ConnectionString = db.konek();
}
尽量减少范围。
答案 3 :(得分:0)
正如例外情况所说,你的“骗局”已经打开了连接。
您可能希望重新使用现有连接,或仅在连接未打开时进行替换:
if(con.State!=ConnectionState.Open)
{
con.ConnectionString = db.Konek();
}
但是当连接字符串已经有一个值并且处于打开状态时修改它,表明你的代码逻辑存在一些缺陷。