sqlite データベースの行を削除したいと考えています。SQLデータ構造と、機能していない現在の削除方法を参照してください。
private static final String[] TABLE_MESSAGE_FIELDS = {
FIELD_USERNAME, "CHAR(32) NOT NULL",
FIELD_READED, "INTEGER(1) NOT NULL",
FIELD_SEND, "INTEGER(1) NOT NULL",
FIELD_TIMESTAMP, "INTEGER(64) NOT NULL",
FIELD_CONTENT, "TEXT NOT NULL",
};
//more tables
private static final String[] TABLE_MESSAGE_INDEXS = {
FIELD_USERNAME, FIELD_READED,
};
これが構造で、基本的にインスタントメッセンジャー(IM)のAndroidアプリなので、ユーザーはメッセージを送受信できます。メッセージの受信などの操作が機能している間は、削除するオプションはありません。
ユーザー間の会話全体、つまり会話内の個々のメッセージではなく、会話全体を削除しようとしています。ユーザー名を見つけて、行全体を削除するのが正しい方法だと思います。テーブル TABLE_MESSAGE_FIELDS には、メッセージを示す 5 つの列が含まれています。その会話全体を削除したいと考えています。
これが私がそれについて行く方法です
public boolean deleteMessage(String userName)
{
SQLiteDatabase database = mLocalDatabase.getWritableDatabase();
final String[] COLUMNS = { FIELD_TIMESTAMP, FIELD_CONTENT };
final String SELECTION = FIELD_USERNAME + "=?" ;
//database.beginTransaction();//do i need this?
boolean result= database.delete(TABLE_MESSAGE,SELECTION,new String[]{userName})>=0;
//database.endTransaction();//??
database.close();
return result;
}