Intereting Posts
Android в приложении billing v3 response, не включая orderId Android ListFragment не сохраняет пакет в onSaveInstanceState () / не извлекает пакет в onActivityCreated () Фрагменты Android. Сохранение AsyncTask во время поворота экрана или изменения конфигурации Android 3.1 / Galaxy Tab / VideoView не будет воспроизводить ViewPager имеет плохие данные смещения после поворота экрана, когда текущая страница не первая WebView в диалоге (загрузка активов) и не выложен GenyMotion Не удалось запустить виртуальное устройство Genymotion Производительность Android SQLite в сложных запросах Ошибка в styles.xml в android-support-v7-mediarouter CursorLoader, получить URI для локальной базы данных Могут ли Honeycomb Loaders решать проблемы с обновлением AsyncTask + UI? Есть ли ярлык на Android Studio для преобразования текста в верхний регистр? Ошибка при добавлении проекта библиотеки в eclipse GCM / FCM: не принимать события, трансляция вызова вызова: result = CANCELED Не удается открыть каталог данных на корневом телефоне Android

Удаление строки в SQLite на Android

Это может быть глупый вопрос, но я новичок в SQLite, и я не могу понять это. У меня есть 1 таблица с столбцами KEY_ROWID , KEY_NAME , KAY_LATITUDE и KEY_LONGITUDE . Я хочу, чтобы пользователь мог выбрать один и удалить его; Может ли кто-нибудь дать мне направление для начала? Мой вопрос заключается в фактическом удалении строки с указанием только ее имени.

Соответствующий код:

 public class BeaconDatabase { public static final String KEY_ROWID = "_id"; public static final String KEY_NAME = "beacon_name"; public static final String KEY_LATITUDE = "beacon_lat"; public static final String KEY_LONGITUDE = "beacon_lon"; private static final String DATABASE_NAME ="BeaconDatabase"; private static final String DATABASE_TABLE ="beaconTable"; private static final int DATABASE_VERSION = 1; private DbHelper helper; private final Context context; private SQLiteDatabase db; public BeaconDatabase(Context context) { this.context = context; } public BeaconDatabase open() { helper = new DbHelper(this.context); db = helper.getWritableDatabase(); return this; } public void close() { helper.close(); } public long createEntry(String name, Double lat, Double lon) { ContentValues cv = new ContentValues(); cv.put(KEY_NAME, name); cv.put(KEY_LATITUDE, lat); cv.put(KEY_LONGITUDE, lon); return db.insert(DATABASE_TABLE, null, cv); } public void deleteEntry(long row) { // Deletes a row given its rowId, but I want to be able to pass // in the name of the KEY_NAME and have it delete that row. //db.delete(DATABASE_TABLE, KEY_ROWID + "=" + row, null); } public String getData() { String[] columns = { KEY_ROWID, KEY_NAME, KEY_LATITUDE, KEY_LONGITUDE }; Cursor cursor = db.query(DATABASE_TABLE, columns, null, null, null, null, null); String result = ""; int iRow = cursor.getColumnIndex(KEY_ROWID); int iName = cursor.getColumnIndex(KEY_NAME); int iLat = cursor.getColumnIndex(KEY_LATITUDE); int iLon = cursor.getColumnIndex(KEY_LONGITUDE); for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { result += cursor.getString(iRow) + ": " + cursor.getString(iName) + " - " + cursor.getDouble(iLat) + " latitude " + cursor.getDouble(iLon) + " longitude\n"; } return result; } private static class DbHelper extends SQLiteOpenHelper { public DbHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_NAME + " TEXT NOT NULL, " + KEY_LATITUDE + " DOUBLE, " + KEY_LONGITUDE + " DOUBLE);" ); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE); onCreate(db); } } } 

Solutions Collecting From Web of "Удаление строки в SQLite на Android"

Вы можете попробовать следующее:

  //---deletes a particular title--- public boolean deleteTitle(String name) { return db.delete(DATABASE_TABLE, KEY_NAME + "=" + name, null) > 0; } 

Попытайтесь, чтобы вы могли получить свое решение

 String table = "beaconTable"; String whereClause = "_id=?"; String[] whereArgs = new String[] { String.valueOf(row) }; db.delete(table, whereClause, whereArgs); 

Лучше использовать и другие;

 db.delete("tablename","id=? and name=?",new String[]{"1","jack"}); 

Это похоже на использование этой команды:

 delete from tablename where id='1' and name ='jack' 

И использование функции удаления таким образом хорошо, потому что оно удаляет SQL-инъекции.

Пока я понимаю ваш вопрос, вы хотите установить два условия для выбора строки, которую нужно удалить. Для этого вам нужно сделать следующее:

 public void deleteEntry(long row,String key_name) { db.delete(DATABASE_TABLE, KEY_ROWID + "=" + row + " and " + KEY_NAME + "=" + key_name, null); /*if you just have key_name to select a row,you can ignore passing rowid(here-row) and use: db.delete(DATABASE_TABLE, KEY_NAME + "=" + key_name, null); */ } 

Попробуйте этот код

 public void deleteRow(String value) { SQLiteDatabase db = this.getWritableDatabase(); db.execSQL("DELETE FROM " + TABLE_NAME+ " WHERE "+COlUMN_NAME+"='"+value+"'"); db.close(); } 

Попробуйте этот код …

 private static final String mname = "'USERNAME'"; public void deleteContact() { db.delete(TABLE_CONTACTS, KEY_NAME + "=" + mname, null); } 

Это прекрасно работает:

 public boolean deleteSingleRow(String rowId) { return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0; } 

Вы также можете обратиться к этому примеру .

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

 public void deleteRowFromTable(String tableName, String columnName, String keyValue) { String whereClause = columnName + "=?"; String[] whereArgs = new String[]{String.valueOf(keyValue)}; yourDatabase.delete(tableName, whereClause, whereArgs); } 

Ребята, если выше решения не работают для вас, попробуйте этот вариант, потому что это сработало для меня.

 public boolean deleteRow(String name) { return db.delete(DATABASE_TABLE, KEY_NAME + "='" + name +"' ;", null) > 0; } 

Если вы используете SQLiteDatabase, то существует метод удаления

Определение удаления

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

Пример реализации

Теперь мы можем написать метод, называемый delete с аргументом как имя

 public void delete(String value) { db.delete(DATABASE_TABLE, KEY_NAME + "=?", new String[]{String.valueOf(value)}); } 

Если вы хотите удалить все записи, просто передайте null указанному выше методу,

 public void delete() { db.delete(DATABASE_TABLE, null, null); } 

Источник информации

Попробуй это:

 public void deleteEntry(long rowId) { database.delete(DATABASE_TABLE , KEY_ROWID + " = " + rowId, null);} 
 public boolean deleteRow(long l) { String where = "ID" + "=" + l; return db.delete(TABLE_COUNTRY, where, null) != 0; } 

Вы можете сделать что-то подобное, делясь своим фрагментом рабочего кода

Убедитесь, что запрос подобен этому

DELETE FROM tableName WHERE KEY__NAME = 'parameterToMatch'

 public void removeSingleFeedback(InputFeedback itemToDelete) { //Open the database SQLiteDatabase database = this.getWritableDatabase(); //Execute sql query to remove from database //NOTE: When removing by String in SQL, value must be enclosed with '' database.execSQL("DELETE FROM " + TABLE_FEEDBACKS + " WHERE " + KEY_CUSTMER_NAME + "= '" + itemToDelete.getStrCustName() + "'" + " AND " + KEY_DESIGNATION + "= '" + itemToDelete.getStrCustDesignation() + "'" + " AND " + KEY_EMAIL + "= '" + itemToDelete.getStrCustEmail() + "'" + " AND " + KEY_CONTACT_NO + "= '" + itemToDelete.getStrCustContactNo() + "'" + " AND " + KEY_MOBILE_NO + "= '" + itemToDelete.getStrCustMobile() + "'" + " AND " + KEY_CLUSTER_NAME + "= '" + itemToDelete.getStrClusterName() + "'" + " AND " + KEY_PRODUCT_NAME + "= '" + itemToDelete.getStrProductName() + "'" + " AND " + KEY_INSTALL_VERSION + "= '" + itemToDelete.getStrInstalledVersion() + "'" + " AND " + KEY_REQUIREMENTS + "= '" + itemToDelete.getStrRequirements() + "'" + " AND " + KEY_CHALLENGES + "= '" + itemToDelete.getStrChallenges() + "'" + " AND " + KEY_EXPANSION + "= '" + itemToDelete.getStrFutureExpansion() + "'" + " AND " + KEY_COMMENTS + "= '" + itemToDelete.getStrComments() + "'" ); //Close the database database.close(); }