好的。我的类的代码是exitends SQLiteOpenHelper。这个数据库保存的东西不是很有趣。 问题是: 例如,我在表格中输入 10 行。 用方法
删除所有行后 public void removeQuestion(int id){
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_NAME, COL_ID + "=" + id, null);
}
清除数据库并添加新行。 问题是行的ID是11而不是1.(因为表被清理,新行必须是表中的第一行)。如何控制它? 这是代码:
public String ID = "id";
public String QUESTION = "question";
public string ANSWER = "answer ;
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT,QUESTION TEXT,ANSWER TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
public void addQuestion(Question question){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(COL_QUESTION, question.QUESTION);
values.put(COL_V1, question.V1);
values.put(ANSWER,question.ANSWER);
// Inserting Row
db.insert(TABLE_NAME, null, values);
db.close(); // Closing database connection
}
public ArrayList<Question> getAllQuestions(){
ArrayList<Question> questions = new ArrayList<Question>();
String selectQuery = "SELECT * FROM " + TABLE_NAME;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
Question question = new Question();
question.ID = Integer.parseInt(cursor.getString(0));
question.QUESTION= cursor.getString(1);
question.ANSWER=cursor.getString(2);
questions.add(question);
} while (cursor.moveToNext());
}
cursor.close();
db.close();
return questions;
}
public void removeQuestion(int id){
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_NAME, COL_ID + "=" + id, null);
}
答案 0 :(得分:1)
首先检查数据是否已从表中完全删除,然后您只需要从问题函数中的表中删除序列,如下所示
Cursor cur = db.rawQuery("SELECT COUNT(*) FROM '" + TABLE_NAME + "'", null);
if (cur != null) {
if(cur.getCount()<=0)
{
db.execSQL("DELETE FROM SQLITE_SEQUENCE WHERE NAME = '" + TABLE_NAME + "'");
}
}
答案 1 :(得分:1)
自动增量字段始终增加 ID。
如果删除所有字段并再次在该表中插入数据,则会增加您的ID,而不是从1开始。
例如,如果插入10个数据并删除所有数据。
现在,当您插入数据时,您的ID将为11而不是1.
一个解决方案是在没有数据的情况下删除您的表。