微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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 = "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)

谁能帮帮我吗

谢谢.

解决方法:

你的bsdid是一个String,所以你需要查询

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

甚至更好

db.update(TABLE_WIFI, values, KEY_BSSID + "=?", new String[]{ theWifiLocation.getBssid() });

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐