Ini mungkin pertanyaan yang bodoh, tapi saya baru mengenal SQLite dan sepertinya saya tidak bisa memahaminya. Saya memiliki 1 tabel yang memiliki kolom KEY_ROWID
, KEY_NAME
, KAY_LATITUDE
, dan KEY_LONGITUDE
. Saya ingin pengguna dapat memilih satu dan menghapusnya; Adakah yang bisa memberi saya arahan untuk memulai? Pertanyaan saya adalah pada penghapusan baris yang sebenarnya hanya diberi namanya.
Kode yang relevan:
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
sumber
sumber
Jawaban:
Anda bisa mencoba seperti ini:
atau
sumber
name = "TRUE; <any SQL command>;"
=> 'perintah SQL apa pun' akan dieksekusi. Tentu tidak menjadi masalah jika tidak ada GUI untuk fitur tersebut.Cobalah seperti itu semoga Anda mendapatkan solusi Anda
sumber
lebih baik menggunakan whereargs juga;
ini seperti menggunakan perintah ini:
dan menggunakan fungsi delete dengan cara seperti itu bagus karena menghapus injeksi sql.
sumber
whereargs
.id=?
sintaks semacam ini dengan PHP sebelumnya dan sepertinya sangat mirip dengan itu.Sampai saya memahami pertanyaan Anda, Anda ingin memberikan dua syarat untuk memilih baris yang akan dihapus. Untuk itu, Anda perlu melakukan:
sumber
Coba kode ini
sumber
Coba kode ini ...
sumber
Ini bekerja dengan sempurna:
Anda juga bisa merujuk ke contoh ini .
sumber
jika Anda menggunakan SQLiteDatabase maka ada metode delete
Definisi Hapus
Implementasi Contoh
Sekarang kita bisa menulis metode yang disebut delete dengan argumen sebagai nama
jika Anda ingin menghapus semua record maka cukup berikan null ke metode di atas,
Sumber informasi
sumber
Guys ini adalah metode umum yang dapat Anda gunakan untuk semua tabel Anda, Bekerja dengan sempurna dalam kasus saya.
sumber
Untuk menghapus baris dari tabel, Anda perlu memberikan kriteria pemilihan yang mengidentifikasi baris ke
delete()
metode. Mekanismenya bekerja sama seperti argumen pemilihan untukquery()
metode tersebut. Ini membagi spesifikasi pemilihan menjadi klausa pemilihan (di mana klausa) dan argumen pemilihan.Nilai kembali untuk
delete()
metode ini menunjukkan jumlah baris yang telah dihapus dari database.sumber
Teman-teman jika solusi di atas tidak berhasil untuk Anda, coba yang ini juga karena berhasil untuk saya.
sumber
Bekerja dengan baik!
sumber
Coba yang ini:
sumber
sumber
Anda dapat melakukan sesuatu seperti ini, membagikan cuplikan kode kerja saya
Pastikan kueri seperti ini
sumber
Coba kode di bawah ini-
sumber
Satu-satunya cara yang berhasil bagi saya adalah ini
sumber