SQLiteデータベースをC#WinFormで開き、例外を処理して奇妙なエラーを取得しようとしています。私はこのコードSQLite ADO.NetとエラーチェックでC#フォームを初期化する際にエラーが発生しました
bool TryingtoStart = true;
while (TryingtoSTart)
{
try
{
dbc.Open();
departmentDataAdapter = new SQLiteDataAdapter("select * from DEPARTMENT", dbc);
// etc
}
catch (SQLiteException ex)
{
DialogResult r = MetroFramework.MetroMessageBox.Show(this, ex.Message.ToString(), "Database error", MessageBoxButtons.RetryCancel);
if (r == DialogResult.Cancel) TryingtoStart = false;
}
catch (Exception exc)
{
DialogResult r = MetroFramework.MetroMessageBox.Show(this, exc.Message.ToString(), "Exception", MessageBoxButtons.RetryCancel);
if (r == DialogResult.Cancel) TryingtoStart = false;
}
if (!TryingtoStart) Application.Exit();
}
そして実行すると、エラーに
"Operation is not valid due to the current state of the object."
を取得を実施しています。それは2番目のcatch()から来ています。つまり、SQLExceptionではありません。私は私のcatchsを削除した場合、私は)エラーにオープンの行番号(と
System.InvalidOperationException: Operation is not valid due to the current state of the object.
at System.Data.SQLite.SQLiteConnection.Open()
を取得
を呼び出して、私はwhileループとのtry/catchを削除すると、すべてが正常に動作します。このコードはForm_Load()メソッドにあります。
私は試しましたが、これを理解できません。私はコメントをいくつかのコメントを外したとエラーが一貫しています。
doh!ありがとうZohar。 if(dbc.State == ConnectionState.Open)のようなテストは中断します。仕事はOK?いくつかの状態があるように見えるので、特にOpenを安全に見えるように接続することができます。 –
私の答えのコードをチェックしてください。 –