Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android sqlite更新问题_Android_Sqlite_Android Sqlite - Fatal编程技术网

Android sqlite更新问题

Android sqlite更新问题,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,如果我的问题太简单,请向我道歉,并指导我更新声明中的错误 我有sqlite在android应用程序中存储我的记录。我能够成功地插入和选择。然而,在更新过程中,我收到了一些错误 代码: private static final String TABLE_WIFI = "wifi"; // table name private static final String KEY_BSSID = "bssid"; private static final String KEY_NAME

如果我的问题太简单,请向我道歉,并指导我更新声明中的错误

我有sqlite在android应用程序中存储我的记录。我能够成功地插入和选择。然而,在更新过程中,我收到了一些错误

代码:

private static final String TABLE_WIFI = "wifi"; // table name

    private static final String KEY_BSSID = "bssid";
    private static final String KEY_NAME = "name";
    private static final String KEY_LAT = "lat";
    private static final String KEY_LNG = "lng";
    private static final String KEY_ACCURACY = "accuracy";

   public void onCreate(SQLiteDatabase db) 
   {
        String CREATE_WIFI_TABLE = "CREATE TABLE " + TABLE_WIFI + "("
            + KEY_BSSID + " TEXT," + KEY_NAME + " TEXT,"
            + KEY_LAT + " TEXT," + KEY_LNG + " TEXT," + KEY_ACCURACY + " TEXT" +")";
        db.execSQL(CREATE_WIFI_TABLE);
    }

    public void updateLocation(Wifi theWifiLocation)
    {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_LAT, theWifiLocation.getLat());
        values.put(KEY_LNG, theWifiLocation.getLng());
        values.put(KEY_ACCURACY, theWifiLocation.getAccuracy());

        db.update(TABLE_WIFI, values, KEY_BSSID + "=" + theWifiLocation.getBssid(), null);
    }
错误日志:

04-26 22:35:42.334: E/AndroidRuntime(30194): FATAL EXCEPTION: Thread-4130
04-26 22:35:42.334: E/AndroidRuntime(30194): android.database.sqlite.SQLiteException: near ":04": syntax error: , while compiling: UPDATE wifi SET lng=?,accuracy=?,lat=? WHERE bssid=54:04:a6:de:98:0c
04-26 22:35:42.334: E/AndroidRuntime(30194):    at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
04-26 22:35:42.334: E/AndroidRuntime(30194):    at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:68)
04-26 22:35:42.334: E/AndroidRuntime(30194):    at android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:150)
04-26 22:35:42.334: E/AndroidRuntime(30194):    at android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:368)
04-26 22:35:42.334: E/AndroidRuntime(30194):    at android.database.sqlite.SQLiteStatement.acquireAndLock(SQLiteStatement.java:272)
04-26 22:35:42.334: E/AndroidRuntime(30194):    at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:84)
04-26 22:35:42.334: E/AndroidRuntime(30194):    at android.database.sqlite.SQLiteDatabase.updateWithOnConflict(SQLiteDatabase.java:1919)
04-26 22:35:42.334: E/AndroidRuntime(30194):    at android.database.sqlite.SQLiteDatabase.update(SQLiteDatabase.java:1870)
04-26 22:35:42.334:E/AndroidRuntime(30194):致命异常:Thread-4130
04-26 22:35:42.334:E/AndroidRuntime(30194):android.database.sqlite.SQLiteException:近:04:编译时语法错误:更新wifi集lng=?,精度=?,纬度=?其中bssid=54:04:a6:de:98:0c
04-26 22:35:42.334:E/AndroidRuntime(30194):在android.database.sqlite.SQLiteCompiledSql.native_编译(本机方法)
04-26 22:35:42.334:E/AndroidRuntime(30194):在android.database.sqlite.SQLiteCompiledSql。(SQLiteCompiledSql.java:68)
04-26 22:35:42.334:E/AndroidRuntime(30194):位于android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:150)
04-26 22:35:42.334:E/AndroidRuntime(30194):在android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:368)
04-26 22:35:42.334:E/AndroidRuntime(30194):位于android.database.sqlite.SQLiteStatement.acquiredandlock(SQLiteStatement.java:272)
04-26 22:35:42.334:E/AndroidRuntime(30194):位于android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:84)
04-26 22:35:42.334:E/AndroidRuntime(30194):在android.database.sqlite.SQLiteDatabase.updateWithOnConflict(SQLiteDatabase.java:1919)
04-26 22:35:42.334:E/AndroidRuntime(30194):位于android.database.sqlite.SQLiteDatabase.update(SQLiteDatabase.java:1870)
谁能帮帮我吗


谢谢。

您的bsdid是一个字符串,因此您的查询需要输入

db.update(TABLE_WIFI, values, KEY_BSSID + "=\"" + theWifiLocation.getBssid() +"\"", null);
甚至更好

db.update(TABLE_WIFI, values, KEY_BSSID + "=?", new String[]{ theWifiLocation.getBssid() });
SimonSays的意思是:)您的字符串,即54:04:a6:de:98:0c,需要用引号括起来才能被数据库接受。