2013-04-26 38 views
5

Sorunuz çok basitse ve güncelleme bildirimde yanlış olanları bana yönlendirirseniz lütfen beni özür dileriz.Android sqlite güncelleme sorunları

Kayıtlarımı android uygulamasında depolamak için sqlite kullanıyorum. Başarıyla ekleyip başarılı bir şekilde seçebildim. Ancak, güncelleme sırasında bazı hatalar alıyorum.

Kodu:

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

Hata günlüğü:

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) 

kimse bana

Teşekkür yardım edebilir. Eğer

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

veya daha iyi Eiter için ihtiyaçlarını sorgulamak böylece

cevap

5

Sizin bsdid, String olduğunu

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

Ne SimonSays :) söylediğini olduğunu dize, yani 54: 04: a6: de: 98: 0c, veritabanı tarafından kabul edilmek üzere tırnak içine alınmalıdır. –

+0

Çok teşekkürler SimonSays .. Zamanında yardımcı oldu :) Tekrar teşekkürler .. –