在Android SQLite中清除行后如何在顶部添加新行

时间:2015-12-14 13:28:56

标签: android database sqlite

好的。我的类的代码是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);
        }

2 个答案:

答案 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.

一个解决方案是在没有数据的情况下删除您的表。