Esta pode ser uma pergunta estúpida, mas sou novo no SQLite e não consigo descobrir isso. Eu tenho uma tabela que tem colunas KEY_ROWID
, KEY_NAME
, KAY_LATITUDE
, e KEY_LONGITUDE
. Quero que o usuário possa selecionar um e excluí-lo; Alguém pode me dar uma direção para começar? Minha pergunta é sobre a exclusão real da linha dado apenas seu nome.
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
fonte
fonte
Respostas:
Você pode tentar assim:
ou
fonte
name = "TRUE; <any SQL command>;"
=> 'qualquer comando SQL' será executado. Claro que não é um problema se não houver GUI para esse recurso.Tente assim para obter a sua solução
fonte
é melhor usar whereargs também;
é como usar este comando:
e usar a função delete dessa forma é bom porque remove injeções de sql.
fonte
whereargs
.id=?
tipo de sintaxe com PHP antes e parece muito semelhante a isso.Até eu entender sua pergunta, você deseja colocar duas condições para selecionar uma linha a ser excluída. Para isso, você precisa fazer:
fonte
Tente este código
fonte
Experimente este código ...
fonte
Isso funciona perfeitamente:
Você também pode consultar este exemplo .
fonte
se você estiver usando SQLiteDatabase, então há um método delete
Definição de Excluir
Exemplo de implementação
Agora podemos escrever um método chamado delete com o argumento como nome
se você quiser deletar todos os registros , basta passar null para o método acima,
Fonte de informação
fonte
Pessoal esse é um método genérico que você pode usar para todas as suas tabelas, Funcionou perfeitamente no meu caso.
fonte
Para excluir linhas de uma tabela, você precisa fornecer critérios de seleção que identifiquem as linhas para o
delete()
método. O mecanismo funciona da mesma forma que os argumentos de seleção para oquery()
método. Ele divide a especificação de seleção em uma cláusula de seleção (cláusula where) e argumentos de seleção.O valor de retorno do
delete()
método indica o número de linhas que foram excluídas do banco de dados.fonte
Pessoal, se as soluções acima não funcionarem para vocês, tentem essa também porque funcionou para mim.
fonte
Funciona bem!
fonte
Tente este:
fonte
fonte
Você pode fazer algo assim, compartilhando meu snippet de código de trabalho
Certifique-se de que a consulta seja assim
fonte
Experimente o código abaixo
fonte
A única maneira que funcionou para mim foi esta
fonte