0

1行だけを削除するのに問題があります。テーブル全体を挿入および削除できます。1行だけ削除するためにID全体を理解することができません。いくつか例を見ていましたが、わかりませんでした。それは私を夢中にさせています。

これがSQLiteクラスです。

public class datahelper {
   private static final String DATABASE_NAME = "table.db";
   private static final int DATABASE_VERSION = 1;
   private static final String TABLE_NAME = "table1";

   private Context context;
   private SQLiteDatabase db;
   private SQLiteStatement insertStmt;

   private static final String INSERT =
       "insert into " + TABLE_NAME + "(name) values (?)";

   public datahelper(Context context) {
       this.context = context;
       OpenHelper openHelper = new OpenHelper(this.context);
       this.db = openHelper.getWritableDatabase();
       this.insertStmt = this.db.compileStatement(INSERT);
   }

   public long insert(String name) {
       this.insertStmt.bindString(1, name);
       return this.insertStmt.executeInsert();
   }

   public long insert2(String name) {
       this.insertStmt2.bindString(1, name);
       return this.insertStmt2.executeInsert();
   }

   public void deleteAll() {
       this.db.delete(TABLE_NAME, null, null);
   }

   private static class OpenHelper extends SQLiteOpenHelper {
       OpenHelper(Context context) {
           super(context, DATABASE_NAME, null, DATABASE_VERSION);
       }

       @Override
       public void onCreate(SQLiteDatabase db) {
           db.execSQL("CREATE TABLE " + TABLE_NAME +
                      " (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)");
   }

}
4

2 に答える 2

6

クエリを実行する

DELETE FROM TABLE_NAME WHERE id = SOMEVALUE
于 2011-01-28T04:44:29.853 に答える
4

この削除メソッドを提供するこの APIを使用しているようです。私の推測では、あなたはこれを行うでしょう:

public void delete(int id) {
    this.db.delete(TABLE_NAME, 'id = ?', new String[] { id.toString() });
}

(元の答え...)

削除したい ID を持つ行のみを削除する WHERE 句を含む DELETE ステートメントを使用します。

DELETE FROM <tablename> WHERE id = ?

もちろん、これを行うには ID を知る必要があります。SQLite は、INSERT の直後に呼び出すことができる関数 — sqlite3_last_insert_rowid() — を提供します。API がこの関数を直接提供していない場合は、同等のSQL 関数を介して間接的に取得できます。

SELECT last_insert_rowid()

または、特定の名前を削除したい場合 (一意であると仮定):

DELETE FROM <tablename> WHERE name = ?
于 2011-01-28T04:45:11.493 に答える