删除SQLite android中的类似记录

时间:2015-04-17 21:47:10

标签: android sqlite

我无法弄清楚如何从SQLite数据库中的表中删除记录,其中没有任何关于记录的唯一信息,所以我的意思是我有一个表,其中存在大量故意重复。

我的应用程序是一个练习跟踪器应用程序,您可以存储集合,代表和重量的练习,我试图进入的表格和删除记录是存储代表和重量的记录,所以他们很容易成为相同。

这是我的代码:

public static final String CREATE_CARD_TABLE = "CREATE TABLE "
    + CARD_TABLE + "(" + CARD_ID
    + " INTEGER PRIMARY KEY AUTOINCREMENT, " + CARD_NAME
    + " TEXT )";

public static final String CREATE_CARDINFO_TABLE = "CREATE TABLE "
    + CARD_INFO_TABLE + "(" + CARD_ID2
    + " INTEGER, " + CARD_NAME2
    + " TEXT, " + CARD_WEIGHT
    + " REAL, " + CARD_REPS
    + " INTEGER, "
    + " FOREIGN KEY " + "("+ CARD_ID2 +")"+ " REFERENCES " + CARD_TABLE + "("+CARD_ID+"));";

插入表格

    public void insert(String name) {
    open();
    database.beginTransaction();
    ContentValues newValues = new ContentValues();
    // Assign values for each row.
    newValues.put(DataBaseHelper.CARD_NAME, name);

    // Insert the row into your table
    database.insert(DataBaseHelper.CARD_TABLE, null, newValues);
    database.setTransactionSuccessful();
    database.endTransaction();
    close();
}

public void insert2(long id, String name, double weight, int reps) {
    Log.v("id", id + "");
    open();
    database.beginTransaction();
    ContentValues newValues2 = new ContentValues();
    // Assign values for each row.
    newValues2.put(DataBaseHelper.CARD_ID2, id);
    newValues2.put(DataBaseHelper.CARD_NAME2, name);
    newValues2.put(DataBaseHelper.CARD_WEIGHT, weight);
    newValues2.put(DataBaseHelper.CARD_REPS, reps);

    // Insert the row into your table
    database.insert(DataBaseHelper.CARD_INFO_TABLE, null, newValues2);
    database.setTransactionSuccessful();
    database.endTransaction();
    close();
}

编辑:如果我想删除所有具有主键ID的记录,该怎么办?因为我可以删除它们并添加一个新列表,因为我有一个显示项目的临时arraylist,我可以在删除所有数据库项目之后将它们中的每一个插入到数据库中。

1 个答案:

答案 0 :(得分:1)

如果您要删除的记录为id,则delete()方法可以提供帮助:

database.delete( table, "_id=?", new String[]{ id } );

如果您想根据其他一些字段删除记录:

database.delete( table, "someField=? or anotherField=?", new String[]{ val1, val2 } );

如果你有一个id列表,你可以一次删除所有记录:

String ids = concatenateIds(); // should return a string "11,22,33,44"
database.delete( table, "_id in (" + ids + ")", new String[]{} );

请注意,您只能将查询的位置参数传递为String s