Это может быть глупый вопрос, но я новичок в 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);
}
}
}
android
sqlite
delete-row
corresponding-records
roboguy12
источник
источник
Ответы:
Вы можете попробовать вот так:
или
источник
name = "TRUE; <any SQL command>;"
=> «любая команда SQL» будет выполнена. Конечно, это не проблема, если для этой функции нет графического интерфейса.Попробуйте так, возможно, вы получите свое решение
источник
лучше использовать whereargs;
это похоже на использование этой команды:
и использование функции удаления таким образом хорошо, потому что оно удаляет инъекции sql.
источник
whereargs
.id=?
синтаксис с PHP, и он очень похож на него.Пока я не пойму ваш вопрос, вы хотите поставить два условия для выбора удаляемой строки. Для этого вам необходимо сделать:
источник
Попробуйте этот код
источник
Попробуйте этот код ...
источник
Это отлично работает:
Вы также можете обратиться к этому примеру .
источник
если вы используете SQLiteDatabase, тогда есть метод удаления
Определение слова Delete
Пример реализации
Теперь мы можем написать метод с именем delete с аргументом в качестве имени
если вы хотите удалить все записи, просто передайте null указанному выше методу,
Источник информации
источник
Ребята, это общий метод, который вы можете использовать для всех своих таблиц. В моем случае он отлично работал.
источник
Чтобы удалить строки из таблицы, вам необходимо предоставить критерии выбора, которые идентифицируют строки для
delete()
метода. Механизм работает так же, как аргументы выбораquery()
метода. Он разделяет спецификацию выбора на предложение выбора (предложение where) и аргументы выбора.Возвращаемое значение
delete()
метода указывает количество строк, удаленных из базы данных.источник
Ребята, если приведенные выше решения не работают для вас, попробуйте это также, потому что оно сработало для меня.
источник
Прекрасно работает!
источник
Попробуй это:
источник
источник
Вы можете сделать что-то вроде этого, поделившись моим рабочим фрагментом кода
Убедитесь, что запрос такой
источник
Попробуйте приведенный ниже код -
источник
Единственный способ, который сработал для меня, - это
источник