Android数据库值未更新

Android数据库值未更新,android,json,database,sqlite,android-asynctask,Android,Json,Database,Sqlite,Android Asynctask,我在JSON服务器URL中有值,使用JSON解析器获取这些值,并将其存储到本地设备数据库中,并显示在移动设备屏幕上。当我第一次运行应用程序时,它会从JSON服务器URL获取所有详细信息并存储到设备数据库中,并显示在移动屏幕上,但当我更新服务器中的任何内容并再次运行应用程序时,它不会更新本地数据库中的值,并且数据库也不会打开写入,这会导致LogCat错误 android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (

我在JSON服务器URL中有值,使用JSON解析器获取这些值,并将其存储到本地设备数据库中,并显示在移动设备屏幕上。当我第一次运行应用程序时,它会从JSON服务器URL获取所有详细信息并存储到设备数据库中,并显示在移动屏幕上,但当我更新服务器中的任何内容并再次运行应用程序时,它不会更新本地数据库中的值,并且数据库也不会打开写入,这会导致LogCat错误

android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
Logcat错误:

12-15 17:23:17.555: E/SQLiteLog(17270): (14) cannot open file at line 32516 of [00bb9c9ce4]
12-15 17:23:17.555: E/SQLiteLog(17270): (14) os_unix.c:32516: (2) open(/data/data/com.example.beacon/databases/BeaconDetails) - 
12-15 17:23:17.560: E/SQLiteDatabase(17270): Failed to open database '/data/data/com.example.beacon/databases/BeaconDetails'.
12-15 17:23:17.560: E/SQLiteDatabase(17270): android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
12-15 17:23:17.560: E/SQLiteDatabase(17270):    at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
12-15 17:23:17.560: E/SQLiteDatabase(17270):    at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:339)
12-15 17:23:17.560: E/SQLiteDatabase(17270):    at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:236)
12-15 17:23:17.560: E/SQLiteDatabase(17270):    at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:515)
12-15 17:23:17.560: E/SQLiteDatabase(17270):    at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:207)
12-15 17:23:17.560: E/SQLiteDatabase(17270):    at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:178)
12-15 17:23:17.560: E/SQLiteDatabase(17270):    at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:891)
12-15 17:23:17.560: E/SQLiteDatabase(17270):    at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:859)
12-15 17:23:17.560: E/SQLiteDatabase(17270):    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:696)
12-15 17:23:17.560: E/SQLiteDatabase(17270):    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:671)
12-15 17:23:17.560: E/SQLiteDatabase(17270):    at com.example.beacon.MainActivity$JsonTask.doInBackground(MainActivity.java:226)
12-15 17:23:17.560: E/SQLiteDatabase(17270):    at com.example.beacon.MainActivity$JsonTask.doInBackground(MainActivity.java:1)
12-15 17:23:17.560: E/SQLiteDatabase(17270):    at android.os.AsyncTask$2.call(AsyncTask.java:287)
12-15 17:23:17.560: E/SQLiteDatabase(17270):    at java.util.concurrent.FutureTask.run(FutureTask.java:234)
12-15 17:23:17.560: E/SQLiteDatabase(17270):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
12-15 17:23:17.560: E/SQLiteDatabase(17270):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
12-15 17:23:17.560: E/SQLiteDatabase(17270):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
12-15 17:23:17.560: E/SQLiteDatabase(17270):    at java.lang.Thread.run(Thread.java:841)
更新:

public class DataBaseHandler extends SQLiteOpenHelper {

     public DataBaseHandler(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
            context = this.context;
        }


    Context context ;

        // All Static variables
        // Database Version
        private static final int DATABASE_VERSION = 1;

        // Database Name
        private static final String DATABASE_NAME = "BeaconDetails";        

        // Contacts table name
        //table 1
        private static final String TABLE_BEACON = "beacon_details";

public long updateBeaconDetails(BeaconDetails beacondetailstore) 
    {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();

        values.put(KEY_NAME,beacondetailstore.name);
        values.put(KEY_UUID,beacondetailstore.uuid);
        values.put(KEY_MAJOR_ID,beacondetailstore.major);
        values.put(KEY_MINOR_ID,beacondetailstore.minor);


         long rowId=db.update(TABLE_BEACON, values,null,null);

         db.close();
         return rowId;
    }

您正在以只读模式打开数据库。 要在写入模式下打开它,请尝试改用open_READWRITE

尝试更改以下行:OPEN_READONLY到OPEN_READWRITE

checkDB = SQLiteDatabase.openDatabase("/data/data/com.example.bconspot/databases/BeaconDetails", null, SQLiteDatabase.OPEN_READWRITE)
checkDB.updateBeaconDetails(beacondetailstore);
checkDB.close();

如果您想更新数据库,为什么要使用只读模式?我在stackoverflow中提到数据库存在,我想更新。所以,我得到了上面的代码,但它不起作用@MagicalPhoenixϡ试图告诉你的是,如果你想编辑你的数据库,你需要得到它的一个可写实例。在READONLY中打开它将不允许您编辑数据库。我已更改了OPEN\u READWRITE。但我仍然面临着同样的问题。只有当数据库存在时,更新才不起作用。我已更改为OPEN_READWRITE。但我仍然面临同样的问题。请发布UpdateBaconDetails方法。请检查编辑的代码。请在此方面提供帮助。将db更改为checkDB。查看我的更新@raj
checkDB = SQLiteDatabase.openDatabase("/data/data/com.example.bconspot/databases/BeaconDetails", null, SQLiteDatabase.OPEN_READWRITE)
checkDB.updateBeaconDetails(beacondetailstore);
checkDB.close();