Dies mag eine dumme Frage sein, aber ich bin neu in SQLite und kann das anscheinend nicht herausfinden. Ich habe 1 Tabelle, hat Spalten KEY_ROWID
, KEY_NAME
, KAY_LATITUDE
, undKEY_LONGITUDE
. Ich möchte, dass der Benutzer einen auswählen und löschen kann. Kann mir jemand eine Richtung geben, in der ich anfangen soll? Meine Frage ist in der tatsächlichen Löschung der Zeile nur ihren Namen gegeben.
Relevanter Code:
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
quelle
quelle
Antworten:
Sie können Folgendes versuchen:
oder
quelle
name = "TRUE; <any SQL command>;"
=> 'Jeder SQL-Befehl' wird ausgeführt. Natürlich ist es kein Problem, wenn es für diese Funktion keine grafische Benutzeroberfläche gibt.Versuchen Sie es so, vielleicht bekommen Sie Ihre Lösung
quelle
es ist besser, auch whereeargs zu verwenden;
Dies ist wie mit diesem Befehl:
Die Verwendung der Löschfunktion auf diese Weise ist gut, da dadurch SQL-Injektionen entfernt werden.
quelle
whereargs
.id=?
Syntax schon einmal mit PHP verwendet und sie scheint dem sehr ähnlich zu sein.Bis ich Ihre Frage verstanden habe, möchten Sie zwei Bedingungen festlegen, um eine zu löschende Zeile auszuwählen. Dazu müssen Sie Folgendes tun:
quelle
Versuchen Sie diesen Code
quelle
Versuchen Sie diesen Code ...
quelle
Das funktioniert perfekt:
Sie können sich auch auf dieses Beispiel beziehen .
quelle
Wenn Sie SQLiteDatabase verwenden gibt es eine
Definition von Löschen
Beispielimplementierung
Jetzt können wir eine Methode namens delete mit einem Argument als Namen schreiben
Wenn Sie alle Datensätze löschen möchten, übergeben Sie einfach null an die oben beschriebene Methode.
Informationsquelle
quelle
Leute, dies ist eine generische Methode, die Sie für alle Ihre Tabellen verwenden können. Hat in meinem Fall perfekt funktioniert.
quelle
Um Zeilen aus einer Tabelle zu löschen, müssen Sie Auswahlkriterien angeben, die die Zeilen für die
delete()
Methode identifizieren . Der Mechanismus funktioniert genauso wie die Auswahlargumente für diequery()
Methode. Es unterteilt die Auswahlspezifikation in eine Auswahlklausel (where-Klausel) und Auswahlargumente.Der Rückgabewert für die
delete()
Methode gibt die Anzahl der Zeilen an, die aus der Datenbank gelöscht wurden.quelle
Leute, wenn die oben genannten Lösungen für Sie nicht funktionieren, probieren Sie diese auch aus, weil sie für mich funktioniert hat.
quelle
Funktioniert super!
quelle
Probier diese:
quelle
quelle
Sie können so etwas tun, indem Sie mein Arbeitscode-Snippet freigeben
Stellen Sie sicher, dass die Abfrage so ist
quelle
Versuchen Sie den folgenden Code-
quelle
Der einzige Weg, der für mich funktionierte, war dieser
quelle