开发者

Delete one row from the database

I'm having a problem deleting just one row. I can insert and delete the whole table. I'm not able to understand the whole ID thing in order to delete just one row. I was looking at some examples, but I couldn't get it. It’s driving me crazy.

Here is the SQLite class;

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)");
   }

}


Execute the query

DELETE FROM TABLE_NAME WHERE id = SOMEVALUE


It looks like you are using this API, which provides this delete method. My guess is that you would do this:

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

(Original answer...)

Use a DELETE statement with a WHERE clause that deletes only the row with the id you want to remove:

DELETE FROM <tablename> WHERE id = ?

Of course, you need to know the id in order to do this. SQLite provides a function — sqlite3_last_insert_rowid() — that you can call immediately after an INSERT. If your API doesn't provide this function directly, you can get it indirectly via the equivalent SQL function:

SELECT last_insert_rowid()

Alernatively if you want to delete a certain name (assuming it's unique):

DELETE FROM <tablename> WHERE name = ?
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜