rob*_*y12 96 sqlite android delete-row corresponding-records
这可能是一个愚蠢的问题,但我是SQLite的新手,我似乎无法解决这个问题.我有了列1台KEY_ROWID
,KEY_NAME
,KAY_LATITUDE
,和KEY_LONGITUDE
.我希望用户能够选择一个并删除它; 任何人都可以给我一个开始的方向吗?我的问题是实际删除了只给出其名称的行.
相关代码:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
Shr*_*jan 176
你可以尝试这样:
//---deletes a particular title---
public boolean deleteTitle(String name)
{
return db.delete(DATABASE_TABLE, KEY_NAME + "=" + name, null) > 0;
}
Run Code Online (Sandbox Code Playgroud)
要么
public boolean deleteTitle(String name)
{
return db.delete(DATABASE_TABLE, KEY_NAME + "=?", new String[]{name}) > 0;
}
Run Code Online (Sandbox Code Playgroud)
Vij*_*jay 155
试试这样你可以得到你的解决方案
String table = "beaconTable";
String whereClause = "_id=?";
String[] whereArgs = new String[] { String.valueOf(row) };
db.delete(table, whereClause, whereArgs);
Run Code Online (Sandbox Code Playgroud)
Ena*_*khi 55
最好也使用whereargs;
db.delete("tablename","id=? and name=?",new String[]{"1","jack"});
Run Code Online (Sandbox Code Playgroud)
这就像使用此命令:
delete from tablename where id='1' and name ='jack'
Run Code Online (Sandbox Code Playgroud)
并以这种方式使用删除功能是好的,因为它删除了sql注入.
Hir*_*ral 17
直到我理解你的问题,你想要两个条件来选择要删除的行.为此,你需要做:
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);
*/
}
Run Code Online (Sandbox Code Playgroud)
小智 13
public void deleteRow(String value)
{
SQLiteDatabase db = this.getWritableDatabase();
db.execSQL("DELETE FROM " + TABLE_NAME+ " WHERE "+COlUMN_NAME+"='"+value+"'");
db.close();
}
Run Code Online (Sandbox Code Playgroud)
试试这个代码......
private static final String mname = "'USERNAME'";
public void deleteContact()
{
db.delete(TABLE_CONTACTS, KEY_NAME + "=" + mname, null);
}
Run Code Online (Sandbox Code Playgroud)
小智 5
这非常有效:
public boolean deleteSingleRow(String rowId)
{
return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
}
Run Code Online (Sandbox Code Playgroud)
您也可以参考此示例.
归档时间: |
|
查看次数: |
246475 次 |
最近记录: |