我在删除一行时遇到问题。我可以插入和删除整个表。我无法理解整个ID的东西,只删除一行,我看着一些例子,我无法得到它。它让我疯狂,任何帮助都会非常感激。 这是sqlite类;
public class datahelper {
private static final String DATABASE_NAME = "table.db";
private static final int DATABASE_VERSION = 1;
private static final String TABLE_NAME = "table1";
private Context context;
private SQLiteDatabase db;
private SQLiteStatement insertStmt;
private static final String INSERT =
"insert into " + TABLE_NAME + "(name) values (?)";
public datahelper(Context context) {
this.context = context;
OpenHelper openHelper = new OpenHelper(this.context);
this.db = openHelper.getWritableDatabase();
this.insertStmt = this.db.compileStatement(INSERT);
}
public long insert(String name) {
this.insertStmt.bindString(1, name);
return this.insertStmt.executeInsert();
}
public long insert2(String name) {
this.insertStmt2.bindString(1, name);
return this.insertStmt2.executeInsert();
}
public void deleteAll() {
this.db.delete(TABLE_NAME, null, null);
}
private static class OpenHelper extends SQLiteOpenHelper {
OpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE_NAME +
" (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)");
}
}
答案 0 :(得分:5)
执行查询
DELETE FROM TABLE_NAME WHERE id = SOMEVALUE
答案 1 :(得分:4)
编辑:根据您的反馈,您似乎正在使用提供this API的this delete method。我的猜测是你会这样做:
public void delete(int id) {
this.db.delete(TABLE_NAME, 'id = ?', new String[] { id.toString() });
}
(原始答案......)
使用带有WHERE子句的DELETE语句,该子句仅删除具有要删除的id的行:
DELETE FROM <tablename> WHERE id = ?
当然,你需要知道id才能做到这一点。 SQLite提供了一个函数 - sqlite3_last_insert_rowid() - 您可以在INSERT之后立即调用它。如果您的API不直接提供此功能,您可以通过等效的SQL function:
间接获取此功能SELECT last_insert_rowid()
如果您想要删除某个名称(假设它是唯一的),则可以自动删除:
DELETE FROM <tablename> WHERE name = ?