2011-01-28 11 views
0

ただ1つの行を削除する際に問題があります。私はテーブル全体を挿入して削除することができます.1行だけを削除するためにIDの全部を理解することができないので、私はそれを得ることができなかったいくつかの例を見ていました。その私は狂った運転、どんな助けも本当に感謝します。 ここにsqliteクラスがあります。データベースから1行を削除する

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

答えて

5

クエリ

DELETE FROM TABLE_NAME WHERE id = SOMEVALUE 
4

EDIT実行:あなたのフィードバックをもとにしあなたがthis delete methodを提供this 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 functionを介して間接的にそれを得ることができます。

SELECT last_insert_rowid() 

をAlernativelyあなたが特定の名前を削除する場合(それはユニークだと仮定します):

DELETE FROM <tablename> WHERE name = ? 
+0

ものです私に混乱は、私はちょうどそのコードを入力することはできません、私はそれがこのように見えると思ったpublic void delete(String id) { \t this.db.delete(TABLE_NUM、 "id =?"、null); } –

+0

@マーク:ああ、私はあなたに便利な削除方法を提供する特定のSQLiteラッパー(Android、おそらく?)を使用しているということがあった。 a)OS /言語/ SDKを指定してください。 b)削除に失敗した試みをあなたの質問に含める。 –

関連する問題