1

データベース ヘルパー クラスから以下の削除メソッドを使用したいと考えています。私はこれを2回尋ねましたが、私が得ているような応答はありません. これは、androidhive.infoから取得したハンドラー クラスです。

Delete メソッド (DatabaseHandler ファイル内):

// Deleting single contact
public void deleteContact(Contact contact) {
    SQLiteDatabase db = this.getWritableDatabase();
    db.delete(TABLE_CONTACTS, KEY_ID + " = ?",new String[] { String.valueOf(contact.getID()) });
    db.close();
}

私が別の活動でそれを実装しているとき。このように:

String a = Integer.toString(_contactlist.get(position).getID());
            viewHolder.txtid.setText(a.trim());
            viewHolder.txt_name.setText(_contactlist.get(position).getName().trim());
            viewHolder.txt_phone.setText(_contactlist.get(position).getPhoneNumber().trim());

final int temp = position;

Contact pm = db.getContact(temp); //temp is the position of the contact
    db.deleteContact(pm);

しかし、これを使用していると、予期しないエラーが発生します。つまり、選択したデータではなく、行内のデータを 1 つだけ削除しています。

私のgetContact メソッド:

// Getting single contact

Contact getContact(int id) {
    SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID,
            KEY_NAME, KEY_PH_NO }, KEY_ID + "=?",
            new String[] { String.valueOf(id) }, null, null, null, null);
    if (cursor != null)
        cursor.moveToFirst();

    Contact contact = new Contact(Integer.parseInt(cursor.getString(0)),
            cursor.getString(1), cursor.getString(2));
    // return contact
    return contact;
}
4

3 に答える 3

0

メソッドdeleteContactはデータベース ハンドルを閉じます。

于 2013-09-14T08:33:55.843 に答える