1

私はアンドロイドが初めてで、sqliteデータベースの削除機能を理解するのに苦労しています。文字列を使用してデータベースを作成しました

private static final String TABLE_NAME="NameInfo";
    private static final String POSITION_DB ="_id";
    private static final String Name_DB ="name";
    private static final String JSONOBJECT_DB="json";
    private static final String TIMESTAMP_DB="time";
    private static final String USERRATING_DB="userrating";
    private static final String DATABASE_NAME ="database.db";    
private final String createDb ="create table if not exists "+TABLE_NAME +" ("
                + POSITION_DB + " integer primary key, "
                + NAME_DB + " text not null, "
                + JSONOBJECT_DB + " text not null, "
                + USERRATING_DB + " text not null, "
                +TIMESTAMP_DB + " text not null); ";

アプリを起動すると、2日以上前に追加されたすべての行を削除する必要があります

だから私はこのようなことを計画しています

long currentdate =new date().getTime();

テーブルの各行の currenttime-Long.Valueof(TIMESTAMP_DB) フィールドの違いを確認し、2*24*60*60 を超える場合はその行を削除します

誰かが上記を達成するために以下の関数を使用する方法を教えてください

public int delete (String table, String whereClause, String[] whereArgs)

whereClause と whereArgs に何を記述すればよいかわかりません。

誰かがこれよりも優れた簡単なアプローチを教えてくれたら本当にありがたいです.

PS私もexecSQLステートメントでやってみましたが、完全なクエリを書くことができませんでしたdatabase.execSQL("Delete * from "+TABLE_NAME+" WHERE = "+currentdate - Long.ValueOf(?) >2*24*60*60 ;")

前もって感謝します。

4

4 に答える 4

2

次のようなクエリを使用できます。

db.execSQL("DELETE FROM " + TABLE_NAME +
           " WHERE " + currentdate + " - " + TIMESTAMP_DB + " > 2*24*60*60");

メソッドの場合、パラメーターの句にupdateSQL 式を記述します。文字列値にのみ必要です。WHEREwhereClausewhereArgs

db.update(TABLE_NAME, currentdate + " - " + TIMESTAMP_DB + " > 2*24*60*60", null);
于 2013-07-29T06:38:52.103 に答える
1

次のようにすることもできます::

db.execSQL(String.format("DELETE FROM %s WHERE %s = %d",
                Table_NAME,Table_ColumnName,Integer.parseInt(Value)));

ステートメントを直接実行します。

そして、あなたが尋ねたように、 WhereClause は、使用したい ColumnNames と式を意味します。args は String 配列であるため、記述した Expression の引数値を渡す必要があります。

db.delete(Table_NAME, ColumnName+" = ", String[]{Value});
于 2013-07-29T06:36:04.757 に答える
0
public void deleteContact(Integer id) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete("AddressList",
                "id = ? ",
                new String[]{Integer.toString(id)});
}

また

生のSQLクエリを使用して行を削除できます

public void deleteContact(Integer id) {
  SQLiteDatabase database = this.getWritableDatabase();
 String s = "DELETE FROM AddressList WHERE item_id=" + id;
database.execSQL(s);
}

ここでAddressListはあなたのテーブル名です

于 2016-05-04T10:44:16.960 に答える