Eliminación de fila en SQLite en Android
Esto podría ser una pregunta tonta, pero soy nuevo en SQLite y no puedo entender esto. Tengo 1 tabla que tiene columnas KEY_ROWID
, KEY_NAME
, KAY_LATITUDE
y KEY_LONGITUDE
. Quiero que el usuario pueda seleccionar uno y borrarlo; ¿Puede alguien darme una dirección para comenzar? Mi pregunta es en la eliminación real de la fila dado sólo su nombre.
Código relevante:
- SQLite insert No hay error de columna en android
- ¿Es posible acceder a la base de datos desde un servicio?
- Java.lang.StringIndexOutOfBoundsException: index = 0 length = 0 en obtener la base de datos sqlite
- Sync SQLite / tabla de base de datos de Android a la tabla de base de datos MySQL remoto (a través de PHP)
- Utilizar el operador OR con 2 marcadores de posición con el mismo valor
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); } } }
- ¿Una base de datos SQLite de Android persiste después de apagar el dispositivo?
- Android.database.sqlite.SQLITeException: no hay tal tabla: admin mientras compila: INSERT INTO ... etc
- Androide sqlite comprobar si se ha insertado un nuevo valor
- SQLite Android no puede abrir el archivo de base de datos
- ¿Es posible usar Couch DB o MySql o cualquier otro DB en Android?
- Android: SQLite usando base de datos incorrecta
- ¿Cómo pasar el valor de la cadena separada por coma en la consulta SQL?
- Varios Table SQLite DB Adapter (s) en Android?
Puede probar de esta manera:
//---deletes a particular title--- public boolean deleteTitle(String name) { return db.delete(DATABASE_TABLE, KEY_NAME + "=" + name, null) > 0; }
Pruebe como que puede obtener su solución
String table = "beaconTable"; String whereClause = "_id=?"; String[] whereArgs = new String[] { String.valueOf(row) }; db.delete(table, whereClause, whereArgs);
Es mejor usar whereargs también;
db.delete("tablename","id=? and name=?",new String[]{"1","jack"});
Esto es como usar este comando:
delete from tablename where id='1' and name ='jack'
Y el uso de la función de eliminación de tal manera es bueno, ya que elimina las inyecciones sql.
Hasta que entienda su pregunta, usted quiere poner dos condiciones para seleccionar una fila para ser deleted.for que, usted necesita hacer:
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); */ }
Prueba este código
public void deleteRow(String value) { SQLiteDatabase db = this.getWritableDatabase(); db.execSQL("DELETE FROM " + TABLE_NAME+ " WHERE "+COlUMN_NAME+"='"+value+"'"); db.close(); }
Prueba este código …
private static final String mname = "'USERNAME'"; public void deleteContact() { db.delete(TABLE_CONTACTS, KEY_NAME + "=" + mname, null); }
Esto funciona perfectamente:
public boolean deleteSingleRow(String rowId) { return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0; }
También puede referirse a este ejemplo .
Chicos este es un método genérico que puede utilizar para todas sus mesas, Trabajó perfectamente en mi caso.
public void deleteRowFromTable(String tableName, String columnName, String keyValue) { String whereClause = columnName + "=?"; String[] whereArgs = new String[]{String.valueOf(keyValue)}; yourDatabase.delete(tableName, whereClause, whereArgs); }
Chicos si las soluciones anteriores no funcionan para usted a continuación, intente este también porque funcionó para mí.
public boolean deleteRow(String name) { return db.delete(DATABASE_TABLE, KEY_NAME + "='" + name +"' ;", null) > 0; }
Si está utilizando SQLiteDatabase entonces hay un método de eliminación
Definición de Eliminar
int delete (String table, String whereClause, String[] whereArgs)
Ejemplo de implementación
Ahora podemos escribir un método llamado delete con argumento como nombre
public void delete(String value) { db.delete(DATABASE_TABLE, KEY_NAME + "=?", new String[]{String.valueOf(value)}); }
Si desea eliminar todos los registros , simplemente pasar nulo al método anterior,
public void delete() { db.delete(DATABASE_TABLE, null, null); }
Fuente de información
Intente esto:
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; }
Puedes hacer algo como esto, compartiendo mi fragmento de código de trabajo
Asegúrese de que la consulta es así
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(); }
- ¿Cómo agregar la lista con viñetas a la aplicación Android?
- ¿Cuáles son las mejores prácticas para usar iconos SVG en Android?