1

私はC#アプリケーションを使用しており、Windowsサービスとしてサーバーマシンでアプリケーションを実行しています。クライアントマシンから挿入、更新、削除操作を実行すると、以下のようにデータベースロックエラーがスローされます。

database is locked
   at System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
   at System.Data.SQLite.SQLiteDataReader.NextResult()
   at System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
   at System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
   at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()
   at System.Data.SQLite.SQLiteTransaction.Commit()

以下は私のコードです

public int ExecuteNonQuerySQL(SQLiteCommand cmd)
   {
        int ireturn = 0;
         if (conn.State != ConnectionState.Open)
               Open(DataFile);
          using (SQLiteTransaction dbtrans = conn.BeginTransaction(IsolationLevel.ReadCommitted))
            {
                  using (cmd.Connection=conn)
                    {
                         cmd.CommandText =cmd.CommandText ;
                          cmd.Transaction = dbtrans;
                           ireturn = cmd.ExecuteNonQuery();
                           dbtrans.Commit();
                           cmd.Dispose();
                        }
                   }
               }

これで私を助けてください、私はたくさんのグーグルをやったので、これを解決するための解決策を見つけなければなりません。よろしく

4

2 に答える 2

0

提供されたコードから、接続を閉じていないようです。

複数のスレッドから操作する場合、同時実行のSqliteサポートがあまり良くなく、場合によってはdbがロックされることもあります。inserts

于 2012-10-05T07:05:58.170 に答える