web-dev-qa-db-ja.com

ORMLITEからレコードを削除する方法

ORMLiteデータベースからレコードを削除する必要があります。次のようにIDでレコードを削除できます。

@Override
public void Delete(int id) throws SQLException {
    this.dao.deleteById(id);
}

しかし、IDではなく名前または他のフィールドで同じテーブルからレコードを削除する必要がある場合はどうなりますか

public void Deletefromcanteen(String name,MealType mealtype) {
    this.dao.deletebyName(name);
}

クエリビルダーを使用して、名前=名前および食事タイプ=言うレコードを削除するためにどのクエリを書き込む必要があるか(昼食)

私は私のデータベースヘルパークラスでこのようなことを試しました

public  void deletefromcanteen(int id, String mealtype) {
    try {
        Dao<CanteenLog, Integer> canteenDao = getCanteen();
        DeleteBuilder<CanteenLog, Integer> deleteBuilder = canteenDao
                .deleteBuilder();
        deleteBuilder.where().eq("user_id", id).and().eq("meal", mealtype);
        canteenDao.delete(deleteBuilder.prepare());
    } catch (Exception e) {
        ...
    }
}
26
Sourabh Saldi
deleteBuilder.where().eq("FIELD_NAME", arg);
deleteBuilder.delete();

更新:

例えば ​​:

//Get helper
DatabaseHelper helper = OpenHelperManager.getHelper(App.getContext(), DatabaseHelper.class);

//get dao
Dao dao = helper.getDao(YOUR_CLASS.class);

//delete elements from table in field by arg
DeleteBuilder<CanteenLog, Integer> deleteBuilder = dao.deleteBuilder();
deleteBuilder.where().eq("FIELD_NAME", arg);
deleteBuilder.delete();

幸運を!

73
Ilya Demidov

Kotlinを使用している場合は、流暢な構文に対して型の推論が現在正しく機能していないため、代わりに次のようなことを行う必要があります。

val deleteBuilder = dao.deleteBuilder()
            val where = deleteBuilder.where().eq("address", address)
            deleteBuilder.setWhere(where)
            deleteBuilder.delete()
0
David Rawson

そのようにもできる

DatabaseHelper.getInstance().getDao(YourObject.class).delete(yourObjectInstance);
0
Airon Tark

削除するオブジェクト(またはオブジェクトリスト)のインスタンスが既にある場合は、次のように実行します。

_//Get helper
DatabaseHelper helper = 
    OpenHelperManager.getHelper(App.getContext(), DatabaseHelper.class);
// delete 'em !
helper.getDao(YourObject.class).delete(yourObjectInstance);
_

削除するインスタンスがないか、SQLで実行する場合は、SQLの方法(!):

_//Get helper
DatabaseHelper helper = 
    OpenHelperManager.getHelper(App.getContext(), DatabaseHelper.class);

//get dao
Dao dao = helper.getDao(YOUR_CLASS.class);

//delete elements from table in field by arg
DeleteBuilder<CanteenLog, Integer> deleteBuilder = dao.deleteBuilder();
deleteBuilder.where().eq("FIELD_NAME", "FIELD_VALUE");
deleteBuilder.delete();
_

より複雑なWhereロジックが必要な場合は、deleteBuilder.where().or()またはdeleteBuilder.where().and()を使用して制約を追加します。

0
AmiNadimi

クエリの作成を保存するには、選択を行ってIDを見つけ、IDで削除します。このテーブルに選択クエリがすでに設定されている場合、これは簡単です。

0
cjk