删除排在SQLite的Andr​​oid中排在、SQLite、oid、Andr

2023-09-12 02:50:11 作者:Eccentric°

这可能是一个愚蠢的问题,但我是新来的SQLite,我似乎无法想出解决办法。我有1表,该表中的列 KEY_ROWID KEY_NAME KAY_LATITUDE KEY_LONGITUDE 。我希望用户能够选择一个并删除它;谁能给我一个方向开始?我的问题是只给出它的名字行的实际删除。

相关code:

 公共类BeaconDatabase {

    公共静态最后弦乐KEY_ROWID =_id;
    公共静态最后弦乐KEY_NAME =beacon_name;
    公共静态最后弦乐KEY_LATITUDE =beacon_lat;
    公共静态最后弦乐KEY_LONGITUDE =beacon_lon;

    私有静态最后弦乐DATABASE_NAME =BeaconDatabase;
    私有静态最后弦乐DATABASE_TABLE =beaconTable;
    私有静态最终诠释DATABASE_VERSION = 1;

    私人DbHelper帮手;
    私人最终上下文的背景下;
    私人SQLiteDatabase分贝;

    公共BeaconDatabase(上下文的背景下){
        this.context =背景;
    }

    公共BeaconDatabase的open(){
        辅助=新DbHelper(this.context);
        DB = helper.getWritableDatabase();
        回到这一点;
    }

    公共无效的close(){
        helper.close();
    }

    众长createEntry(字符串名称,双纬度,双LON){
        ContentValues​​ CV =新ContentValues​​();
        cv.put(KEY_NAME,姓名);
        cv.put(KEY_LATITUDE,纬度);
        cv.put(KEY_LONGITUDE,LON);
        返回db.insert(DATABASE_TABLE,空,CV);
    }

    公共无效deleteEntry(长排){

              //删除鉴于其ROWID的行,但我希望能够通过
              //在KEY_NAME的名字,并将它删除该行。
              //db.delete(DATABASE_TABLE,KEY_ROWID +=+行,NULL);
    }

    公共字符串的getData(){
        的String []列= {KEY_ROWID,KEY_NAME,KEY_LATITUDE,KEY_LONGITUDE};
        光标光标= db.query(DATABASE_TABLE,列,NULL,NULL,NULL,NULL,NULL);
        字符串结果=;

        INT iRow = cursor.getColumnIndex(KEY_ROWID);
        INT INAME = cursor.getColumnIndex(KEY_NAME);
        INT ILAT = cursor.getColumnIndex(KEY_LATITUDE);
        INT iLon = cursor.getColumnIndex(KEY_LONGITUDE);

        为(cursor.moveToFirst();!cursor.isAfterLast(); cursor.moveToNext()){
            结果+ = cursor.getString(iRow)+:+ cursor.getString(INAME)+ - + cursor.getDouble(ILAT)+纬度+ cursor.getDouble(iLon)+经度\ N的;
        }

        返回结果;

    }

    私有静态类DbHelper扩展SQLiteOpenHelper {

        公共DbHelper(上下文的背景下){
            超(背景下,DATABASE_NAME,空,DATABASE_VERSION);
        }

        @覆盖
        公共无效的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 +双);
            );
        }

        @覆盖
        公共无效onUpgrade(SQLiteDatabase分贝,INT oldVersion,诠释静态网页){
            db.execSQL(DROP TABLE IF EXISTS+ DATABASE_TABLE);
            的onCreate(DB);
        }
    }
}
 

解决方案

您可以尝试这样的:

  // ---删除特定的标题---
公共布尔deleteTitle(字符串名称)
{
    返回db.delete(DATABASE_TABLE,KEY_NAME +=+名,NULL)> 0;
}
 

This might be a dumb question, but I'm new to SQLite and I can't seem to figure this out. I have 1 table that has columns KEY_ROWID, KEY_NAME, KAY_LATITUDE, and KEY_LONGITUDE. I want the user to be able to select one and delete it; Can anyone give me a direction to start in? My question is in the actual deletion of the row given only its name.

Relevant 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);
        }
    }
}

解决方案

You can try like this:

 //---deletes a particular title---
public boolean deleteTitle(String name) 
{
    return db.delete(DATABASE_TABLE, KEY_NAME + "=" + name, null) > 0;
}