Esta puede ser una pregunta tonta, pero soy nuevo en SQLite y parece que no puedo resolver esto. Tengo 1 tabla que tiene columnas KEY_ROWID
, KEY_NAME
, KAY_LATITUDE
, y KEY_LONGITUDE
. Quiero que el usuario pueda seleccionar uno y eliminarlo; ¿Alguien puede darme una dirección para empezar? Mi pregunta está en la eliminación real de la fila dada solo su nombre.
Código relevante:
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
fuente
fuente
Respuestas:
Puedes probar así:
o
fuente
name = "TRUE; <any SQL command>;"
=> se ejecutará 'cualquier comando SQL'. Por supuesto, no es un problema si no hay una GUI para esa función.Intenta así, puede que obtengas tu solución
fuente
es mejor usar whereargs también;
esto es como usar este comando:
y usar la función de eliminación de esa manera es bueno porque elimina las inyecciones de SQL.
fuente
whereargs
.id=?
tipo de sintaxis con PHP antes y parece muy similar a eso.Hasta que entienda su pregunta, desea poner dos condiciones para seleccionar una fila que se eliminará. Para eso, debe hacer:
fuente
Prueba este código
fuente
Prueba este código ...
fuente
Esto funciona perfectamente:
También puede consultar este ejemplo .
fuente
si está utilizando SQLiteDatabase, entonces hay un método de eliminación
Definición de eliminar
Implementación de ejemplo
Ahora podemos escribir un método llamado eliminar con un argumento como nombre
si desea eliminar todos los registros , simplemente pase nulo al método anterior,
Fuente de información
fuente
Chicos, este es un método genérico que pueden usar para todas sus tablas, funcionó perfectamente en mi caso.
fuente
Para eliminar filas de una tabla, debe proporcionar criterios de selección que identifiquen las filas del
delete()
método. El mecanismo funciona igual que los argumentos de selección delquery()
método. Divide la especificación de selección en una cláusula de selección (cláusula where) y argumentos de selección.El valor de retorno del
delete()
método indica el número de filas que se eliminaron de la base de datos.fuente
Chicos, si las soluciones anteriores no funcionan para ustedes, intenten esta también porque funcionó para mí.
fuente
¡Funciona genial!
fuente
Prueba este:
fuente
fuente
Puedes hacer algo como esto, compartiendo mi fragmento de código de trabajo
Asegúrate de que la consulta sea así
fuente
Pruebe el siguiente código
fuente
La única forma que funcionó para mí fue esta
fuente