質問: こんにちわ、アンドロイド開発をやっているものですが、 今開発中のアプリは難題とあってて、解決に至らなくて困っています。。。 機能の要件は大体 アンドロイドのAPPがタブレット端末内のSqliteDBをinsertする処理、Deleteする処理が行われた時の問題でした。 システム構成上は Aアプリは高い頻度でMMMテーブルにinsertしていました、 その後、 Bアプリのほうでボタンを押して、MMMテーブルのデータをDeleteする<ー★ ※このDeleteする時に異常が出ました。 ***Exceptionメッセージは以下です〜↓↓↓*** android.database.sqlite.SQLiteCantOpenDatabaseException: unable to open database file (code 14) at android.database.sqlite.SQLiteConnection.nativeExecuteForChangedRowCount(Native Method) at android.database.sqlite.SQLiteConnection.executeForChangedRowCount(SQLiteConnection.java:734) at android.database.sqlite.SQLiteSession.executeForChangedRowCount(SQLiteSession.java:754) at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:64) at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1674) at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1603) at com.tre.pacer.autoupdatenew.database.DBManager.ExecSQL(DBManager.java:65) at com.tre.pacer.autoupdate.dataupload.UploadDataUtils.clearUploadLocalData(UploadDataUtils.java:220) at com.tre.pacer.autoupdate.dataupload.DBdataUpload.dataUpload(DBdataUpload.java:194) at com.tre.pacer.autoupdate.dataupload.DBdataUpload$2.run(DBdataUpload.java:77) at java.lang.Thread.run(Thread.java:841) ※補足情報としては AシステムはHybirdアプリで、html+jsで操作データをWebviewの内製jsAPIを通じて、Sqliteに書き込むものです。 BシステムはSqliteデータをサーバー側に吸い上げて更新する処理で、実行する時点でテーブルのデータを取得し、csvを生成し、サーバーにアップロードします。その後、SqliteDBの該当テーブルMMMを削除する。 Aシステムを操作する時に、もし速い操作をしてから、すぐBシステムを実行する時に、よく上のエラーが出ます。 なんかSqliteを取り扱う時の相互的な影響だったかな? 達人の方々、助けてください。
回答: Sqliteはdbファイル全体にロックをかけるのでinsertでトランザクションを使っている場合は削除できないと思いますよ。 また、SqliteはA、Bのどちらからもアクセスできるパスに保存されていますか? ログはコードと同じ記述方法にしたほうがいいですよ。