按主键删除行 - SQLite Android

时间:2017-11-13 13:02:26

标签: android sqlite

关于在我的Android应用程序中删除一行有关SQLite后台数据库的问题,我遇到了一些问题。

我有6种线型。例如S1,S2,S3等我一次只能有6行,因此我的数据库中只有6行。在我的应用程序的每个按钮旁边,我有一个" X"按钮,当他们点击时说出S1旁边的X按钮我希望数据库删除带有主键的行" S1"。

我认为有一个快速的解决方案,但我试图以不同的方式操纵我的查询,并且无法得到正确的答案。

以下是我的一些代码:

DB助手:

 public void deleteProgressBar4() {
    SQLiteDatabase db = this.getWritableDatabase();
    db.delete(TABLE_NAME, COL_2 + "=", new String[]{"S1"});
    return;
}
  

顺便说一句,COL_2是LineType ..

X按钮代码:

builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                                               @Override
                                               public void onClick(DialogInterface dialog, int which) {
                                                   myDb.deleteProgressBar4();
                                                   Toast.makeText(Dashboard.this, "Line S1 Cleared!", Toast.LENGTH_SHORT).show();
                                               }
                                           });

任何人都可以看到我在删除功能中犯的错误吗?这是我运行时遇到的错误:

  

android.database.sqlite.SQLiteException:near" =&#34 ;:语法错误(代码1):,编译时:DELETE FROM pharma_tracker_table WHERE LINETYPE =                         在android.database.sqlite.SQLiteConnection.nativePrepareStatement(本机方法)                         在android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)                         在android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)                         在android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)                         在android.database.sqlite.SQLiteProgram。(SQLiteProgram.java:58)                         在android.database.sqlite.SQLiteStatement。(SQLiteStatement.java:31)                         在android.database.sqlite.SQLiteDatabase.delete(SQLiteDatabase.java:1499)                         在com.almac.tracker.DatabaseHelper.deleteProgressBar4(DatabaseHelper.java:141)                         在com.almac.tracker.Dashboard $ 6 $ 1.onClick(Dashboard.java:219)                         在android.support.v7.app.AlertController $ ButtonHandler.handleMessage(AlertController.java:162)                         在android.os.Handler.dispatchMessage(Handler.java:102)                         在android.os.Looper.loop(Looper.java:154)                         在android.app.ActivityThread.main(ActivityThread.java:6077)                         at java.lang.reflect.Method.invoke(Native Method)                         在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:866)                         在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)   申请已终止。

谢谢!

1 个答案:

答案 0 :(得分:-1)

只需替换您的表名和列名

SQLiteDatabase db = this.getWritableDatabase();
    long i =db.delete("tableName", "column Name = ?", new String[]{String.valueof(Id)});