2013-04-26 41 views
5

Vui lòng xin lỗi tôi nếu câu hỏi của tôi quá đơn giản và hướng dẫn tôi điều gì sai trong bản cập nhật của tôi.Vấn đề cập nhật sqlite trên Android

Tôi có sqlite để lưu trữ hồ sơ của mình trong ứng dụng Android. Tôi đã có thể chèn và chọn thành công. Tuy nhiên, trong quá trình cập nhật, tôi nhận được một số lỗi.

Code:

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); 
    } 

Lỗi đăng nhập:

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) 

Bất cứ ai có xin vui lòng giúp tôi

cảm ơn.

Trả lời

5

bsdid của bạn là một String, vì vậy bạn cần phải truy vấn eiter

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

hoặc thậm chí tốt hơn

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

gì SimonSays đang nói :) là chuỗi của bạn, cụ thể là 54: 04: a6: de: 98: 0c, cần được bọc trong dấu ngoặc kép để được cơ sở dữ liệu chấp nhận. –

+0

Cảm ơn rất nhiều SimonSays .. Đó là một sự giúp đỡ kịp thời :) Cảm ơn một lần nữa .. –

Các vấn đề liên quan