C'est peut-être une question stupide, mais je suis nouveau sur SQLite et je n'arrive pas à comprendre cela. J'ai 1 table qui a des colonnes KEY_ROWID
, KEY_NAME
, KAY_LATITUDE
, et KEY_LONGITUDE
. Je veux que l'utilisateur puisse en sélectionner un et le supprimer; Quelqu'un peut-il me donner une direction pour commencer? Ma question porte sur la suppression effective de la ligne qui ne porte que sur son nom.
Code pertinent:
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
la source
la source
Réponses:
Vous pouvez essayer comme ceci:
ou
la source
name = "TRUE; <any SQL command>;"
=> 'toute commande SQL' sera exécutée. Bien sûr, ce n'est pas un problème s'il n'y a pas d'interface graphique pour cette fonctionnalité.Essayez comme ça pour avoir votre solution
la source
il vaut mieux aussi utiliser des objets;
c'est comme utiliser cette commande:
et l'utilisation de la fonction de suppression de cette manière est bonne car elle supprime les injections SQL.
la source
whereargs
.id=?
genre de syntaxe avec PHP et cela semble très similaire à cela.Jusqu'à ce que je comprenne votre question, vous souhaitez mettre deux conditions pour sélectionner une ligne à supprimer.Pour cela, vous devez faire:
la source
Essayez ce code
la source
Essayez ce code ...
la source
Cela fonctionne parfaitement:
Vous pouvez également vous référer à cet exemple .
la source
si vous utilisez SQLiteDatabase, il existe une méthode de suppression
Définition de la suppression
Exemple d'implémentation
Maintenant, nous pouvons écrire une méthode appelée delete avec l'argument comme nom
si vous souhaitez supprimer tous les enregistrements, passez simplement null à la méthode ci-dessus,
Source d'information
la source
Les gars, c'est une méthode générique que vous pouvez utiliser pour toutes vos tables, a parfaitement fonctionné dans mon cas.
la source
Pour supprimer des lignes d'une table, vous devez fournir des critères de sélection qui identifient les lignes de la
delete()
méthode. Le mécanisme fonctionne de la même manière que les arguments de sélection de laquery()
méthode. Il divise la spécification de sélection en une clause de sélection (clause where) et des arguments de sélection.La valeur de retour de la
delete()
méthode indique le nombre de lignes qui ont été supprimées de la base de données.la source
Les gars si les solutions ci-dessus ne fonctionnent pas pour vous, essayez celle-ci aussi parce que cela a fonctionné pour moi.
la source
Fonctionne très bien!
la source
Essaye celui-là:
la source
la source
Vous pouvez faire quelque chose comme ça, partager mon extrait de code de travail
Assurez-vous que la requête est comme ça
la source
Essayez le code ci-dessous-
la source
La seule façon qui a fonctionné pour moi était ceci
la source