2010-12-22 101 views
0

我想刪除我的Android應用程序中選擇的記錄形式我的SQLite數據庫。但我無法做到這一點,並在程序運行時得到異常。查詢刪除從SQLite數據庫的特定記錄android

這是我想要刪除特定的選定記錄。

public void deleteRecord(String datarecord) 
    { 
     this.db.delete(TABLE_NAME, "name="+datarecord , null); 
    } 

這就是我對從中執行所選記錄的刪除操作的單擊事件所做的事情。

dh.deleteRecord(FavMusicList[position]); 

dh是我的DataHelper類的對象,我創建了deleteRecord函數。

我得到了語法錯誤的SQLite異常。所以我想我肯定是犯了錯誤的語法刪除特定選定的記錄,但不知道我到底需要糾正什麼。

有人能幫我嗎?

感謝, 大衛

我的堆棧跟蹤:

12-22 14:39:37.892: ERROR/AndroidRuntime(676): FATAL EXCEPTION: main 
12-22 14:39:37.892: ERROR/AndroidRuntime(676): android.database.sqlite.SQLiteException: near "very": syntax error: , while compiling: DELETE FROM table1 WHERE name=Iâm very drunk 
12-22 14:39:37.892: ERROR/AndroidRuntime(676):  at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method) 
12-22 14:39:37.892: ERROR/AndroidRuntime(676):  at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:91) 
12-22 14:39:37.892: ERROR/AndroidRuntime(676):  at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:64) 
12-22 14:39:37.892: ERROR/AndroidRuntime(676):  at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:80) 
12-22 14:39:37.892: ERROR/AndroidRuntime(676):  at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:36) 
12-22 14:39:37.892: ERROR/AndroidRuntime(676):  at android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1145) 
12-22 14:39:37.892: ERROR/AndroidRuntime(676):  at android.database.sqlite.SQLiteDatabase.delete(SQLiteDatabase.java:1589) 
12-22 14:39:37.892: ERROR/AndroidRuntime(676):  at com.android.soundmachine.DataHelper.deleteRecord(DataHelper.java:42) 
12-22 14:39:37.892: ERROR/AndroidRuntime(676):  at com.android.soundmachine.FavoritesListing$SoundMacHineAdapter$1$1.onClick(FavoritesListing.java:192) 
12-22 14:39:37.892: ERROR/AndroidRuntime(676):  at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158) 
12-22 14:39:37.892: ERROR/AndroidRuntime(676):  at android.os.Handler.dispatchMessage(Handler.java:99) 
12-22 14:39:37.892: ERROR/AndroidRuntime(676):  at android.os.Looper.loop(Looper.java:123) 
12-22 14:39:37.892: ERROR/AndroidRuntime(676):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
12-22 14:39:37.892: ERROR/AndroidRuntime(676):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-22 14:39:37.892: ERROR/AndroidRuntime(676):  at java.lang.reflect.Method.invoke(Method.java:521) 
12-22 14:39:37.892: ERROR/AndroidRuntime(676):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
12-22 14:39:37.892: ERROR/AndroidRuntime(676):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
12-22 14:39:37.892: ERROR/AndroidRuntime(676):  at dalvik.system.NativeStart.main(Native Method) 
+1

如果您提供的堆棧跟蹤,這將是很有幫助。 – Mudassir 2010-12-22 05:32:38

+0

@Mudassir:對不起,但我不明白Stack Trace是什麼意思? – 2010-12-22 05:36:06

回答

3

DELETE FROM表1 WHERE name = IAM非常 醉

空間是不允許的。您應該在WHERE子句中給出引號或雙引號。

0

雖然SQLite中使用字符串匹配保持在單引號「您匹配字符串」

整數或不要求數量的報價..

DELETE FROM table1 WHERE name='Iâm very drunk'