Как удалить конкретную запись из SQLite? - PullRequest
1 голос
/ 07 марта 2012

Мне нужно удалить конкретную запись из sqlite .Но следующий код не может удалить его.
Пожалуйста, дайте мне подсказку.

public void delete(String Id)
{
    try {

        db.delete(MySQLiteHelper.TABLE_NAME, "Id=?",
              new String[] { Id.toString() });
    }
    catch(Exception e) { ... }

}

Ответы [ 6 ]

5 голосов
/ 07 марта 2012

(ОБНОВЛЕНО) Вы должны использовать:

db.delete(MySQLiteHelper.TABLE_NAME, "Id=?", new String[] { Id });

И на самом деле предлагает использовать не 'Id', а BaseColumns._ID, что равно"_id".

EDIT : для будущих пользователей.

В чем разница между следующими методами:

1. db.delete(MySQLiteHelper.TABLE_NAME, "_id=" + Id, null);
2. db.delete(MySQLiteHelper.TABLE_NAME, "_id=?", new String[] {Id});
3. db.delete(MySQLiteHelper.TABLE_NAME, TABLE.ID_COLUMN_NAME + "=?", new String[] {Id});

Я могу сказатьчто все они хорошо работают.Разница между первым и вторым методами заключается в том, что в целом второй метод быстрее, чем первый и безопаснее.Почему быстрее?Поскольку Android может создавать кэш параметризованных запросов, этот параметризованный запрос будет быстрее после первого раза.Android не может сделать кеш первого запроса.Почему безопаснее?Он не содержит SQL-инъекций.

Разница между вторым и третьим методом заключается в том, что имя столбца id не жестко закодировано во всех запросах.Вы можете просто определить это поле только один раз, а затем, если имя столбца изменяется, вам нужно изменить его только в одном месте.

4 голосов
/ 07 марта 2012

попробуй так:

public void delete(String Id)
{
    try {

        db.delete(MySQLiteHelper.TABLE_NAME, "Id="+Id, null);
    }
    catch(Exception e) { ... }
}
2 голосов
/ 07 марта 2012
try {
    myDB = myDbHelper.openDataBase();
} catch (SQLException sqle) {
    throw sqle;
}
String strFilter = "ID =" + ID;
myDB.delete("Table1, strFilter, null);
myDB.close();
1 голос
/ 07 марта 2012

Используйте это
, где

  ourDatabase ="your database name"
  KEY_ROWID="rowid" of your database
&  int l=rowid number of which data you want to delete
   ourDatabase.delete(DATABASE_TABLE, KEY_ROWID+"="+l, null);

, если вместо KEY_ROWID + "=" + l указать null, чем удалить все данные

1 голос
/ 07 марта 2012

Я думаю, что вы можете выполнить простой DELETE SQL Query, например:

"DELETE FROM tablename WHERE id = ?"

и передать значение id в качестве параметра этому запросу ...

0 голосов
/ 31 января 2018

Вы можете попробовать следующий код, чтобы удалить запись в базе данных

public void deleteRowFromTable(String tableName, String columnName, String keyValue) {
mSQLiteDatabase = getWritableDatabase();//To delete , database should be writable.
    String mColumName= columnName + "=?";
    String[] whereArgs = new String[]{String.valueOf(keyValue)};
    mSQLiteDatabase.delete(tableName, mColumName, whereArgs);
mSQLiteDatabase.close();//This is very important once database operation is done.

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...