2013-04-26 10 views
5

私の質問があまりにも単純で、私の更新声明で何が間違っているか教えてください、私に謝罪してください。Android sqliteアップデートの問題

私はアンドロイドアプリに自分のレコードを保存するsqliteを持っています。私は挿入と選択に成功しました。ただし、更新中に何らかのエラーが発生しています。

コード:

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) 

誰もが

はありがとうございました、私を助けてください。あなたは

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

またはより良いeiterへのニーズを問い合わせるよう

答えて

5

あなたbsdidは、文字列である

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

何SimonSaysが:)言っていることであるあなたの文字列、すなわち54:04:A6: de:98:0cは、データベースで受け入れられるように引用符で囲む必要があります。 –

+0

ありがとうSimonSays ..それはタイムリーな助けでした:)もう一度ありがとう.. –

関連する問題