我们可以在android sqlite中使用截断查询

时间:2010-08-19 08:47:51

标签: android database sqlite

我们可以在android数据库中使用截断查询吗? 否则我们可以使用我们的java代码执行截断操作吗?

4 个答案:

答案 0 :(得分:12)

如果我必须截断一个表,我只需删除并重新创建它。

文档(http://www.sqlite.org/lang_delete.html):

当从DELETE语句中省略WHERE并且要删除的表没有触发器时,SQLite使用优化来擦除整个表内容,而无需单独访问表的每一行。这种“截断”优化使删除运行速度更快。

答案 1 :(得分:6)

DELETE FROM tablename
真空

例如:

db.execSQL("DELETE FROM " + TABLE_NAME);
db.execSQL("VACUUM");

注意:这不会使用AUTOINCREMENT重置行的行编号。为此,您需要删除表并重新创建它。

来源:http://phpcode.mypapit.net/how-to-truncate-table-in-sqlite-database/49/

答案 2 :(得分:1)

这是我使用的代码,仅用于说明:

private static final String TABLE_SCHEMA = "CREATE  TABLE " + TABLE_NAME + " (\"id\" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL  UNIQUE , \"runtime\" INTEGER, \"timestamp\" DATETIME DEFAULT CURRENT_TIMESTAMP)";

db.execSQL("DROP TABLE " + TABLE_NAME);

db.execSQL(TABLE_SCHEMA);

答案 3 :(得分:1)

正如WarrenFaith所指出的那样,我只是提供了2019年12月的逻辑代码

在您的活动/片段中

// Delete The Temp Table
public static void clearSQLiteTempImagesTable(Context context) {

    // SQLite Variable
    SQLiteDatabase mDatabase;
    SQLiteHelper dbHelper = new SQLiteHelper(context);
    mDatabase = dbHelper.getWritableDatabase();

    mDatabase.beginTransaction();

    try {

        mDatabase.execSQL("DROP TABLE IF EXISTS "+TempImagesContract.tempImagesTable.TABLE_NAME);
        TempImagesContract.createTempImagesTable(mDatabase);

        mDatabase.setTransactionSuccessful();

    } catch (Exception e) {

        e.printStackTrace();

    } finally {

        mDatabase.endTransaction();
        mDatabase.close();

    }

}

SQLite助手

public class TempImagesContract {

    public TempImagesContract() {
    }

    // Create Table
    public static void createTempImagesTable(SQLiteDatabase db) {

        final String SQL_CREATE_TEMP_IMAGES_TABLE = "CREATE TABLE " +
                                                    tempImagesTable.TABLE_NAME + " (" +
                                                    tempImagesTable._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                                                    tempImagesTable.COLUMN_IMAGE_URL + " TEXT NOT NULL " +
                                                    ");";

        db.execSQL(SQL_CREATE_TEMP_IMAGES_TABLE);

    }

    // Define Table
    public static final class tempImagesTable
            implements BaseColumns {

        public static final String TABLE_NAME = "temp_images";
        public static final String COLUMN_IMAGE_URL = "image_url";

    }
}