Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按主键删除行-SQLite Android_Android_Sqlite - Fatal编程技术网

按主键删除行-SQLite Android

按主键删除行-SQLite Android,android,sqlite,Android,Sqlite,我的android应用程序有一个SQLite后台数据库,在按主键删除一行时遇到了一些问题 目前我有6种线型。e、 S1、S2、S3等。我一次只能有6行,因此我的数据库中只有6行。在应用程序的每个按钮旁边,我都有一个“X”按钮,当他们点击S1旁边的X按钮时,我希望数据库删除主键为“S1”的行 我认为有一个很快的解决办法,但我试图用许多不同的方法来处理我的问题,却得不到正确的答案 以下是我的一些代码: 数据库助手: public void deleteProgressBar4() { SQ

我的android应用程序有一个SQLite后台数据库,在按主键删除一行时遇到了一些问题

目前我有6种线型。e、 S1、S2、S3等。我一次只能有6行,因此我的数据库中只有6行。在应用程序的每个按钮旁边,我都有一个“X”按钮,当他们点击S1旁边的X按钮时,我希望数据库删除主键为“S1”的行

我认为有一个很快的解决办法,但我试图用许多不同的方法来处理我的问题,却得不到正确的答案

以下是我的一些代码:

数据库助手:

 public void deleteProgressBar4() {
    SQLiteDatabase db = this.getWritableDatabase();
    db.delete(TABLE_NAME, COL_2 + "=", new String[]{"S1"});
    return;
}
顺便说一下,COL_2是线型

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“=”:语法错误(代码1):,编译时:从pharma_tracker_表中删除,其中线型= 位于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) 位于java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)上 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756) 申请终止


谢谢

只需替换为表名和列名即可

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

使用
“=?”
,而不是
“=”
谢谢@pskink!那很管用