从android中的SQLite数据库中删除特定记录的查询
我想从我的 Android 应用程序中的 SQLite 数据库中删除所选记录。但我无法做到这一点并在程序运行时出现异常。
这是我试图删除特定选定记录的内容。
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)
I want to delete the selected record form my SQLite Database in my android application. But I can't do it and getting the exception while program runs.
Here is what I am trying to delete the Particular Selected Record.
public void deleteRecord(String datarecord)
{
this.db.delete(TABLE_NAME, "name="+datarecord , null);
}
And this is what I am doing on the click event from where I perform the delete operation of the selected Record.
dh.deleteRecord(FavMusicList[position]);
dh is the object of my DataHelper Class where I have created the deleteRecord function.
I am getting the SQLite Exception for the Syntax Error. So I guess I am surely making mistake with the Syntax to delete the Particular Selected Record but couldn't know what exactly I have to correct.
Can anybody please help me in this?
Thanks,
david
My Stack Trace:
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)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
空间是不允许的。您应该在 WHERE 子句中给出引号或双引号。
Space is not allowed. You should give quote, or double quote in the WHERE clause.
在 SQLite 中使用字符串匹配时,请将其保留在单引号“您的匹配字符串”中,
对于不需要的整数或数字引号。
While using string match in SQLite keep it with in single Quote 'your match string'
For Integer or number quote not required..