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読み取り専用になっている可能性があります。これを解決する 1 つの方法は、オブジェクトの別のインスタンスを作成するConnectionことです。

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

範囲をできるだけ小さくします。

于 2012-10-18T03:56:35.707 に答える
0

例外が言うように、「con」はすでに接続を開いています。

既存の接続を再利用するか、接続が開いていない場合にのみ置き換えることができます。

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

ただし、既に値があり、開いているときに接続文字列を変更すると、コード ロジックに何らかの欠陥があることがわかります。

于 2012-10-18T03:56:35.910 に答える