gpt4 book ai didi

android - 旧数据保存在我的 Android Sqlite 数据库中

转载 作者:行者123 更新时间:2023-11-29 19:55:11 26 4
gpt4 key购买 nike

我正在更新我的应用程序,这样做的目的是通过 SOAP 服务发送数据,我的想法是在每次应用程序更新或卸载和重新安装时删除表,所以我这样做了:

private static final int DATABASE_VERSION = 2;
private static final String DATABASE_NAME = "name.db";
private static final String TABLE_DEMANDES = "demandes";
private static final String KEY_ID = "id";
private static final String KEY_XML = "xml";
private static final String KEY_STATUTENVOIE = "statutEnvoie";
private static final String KEY_DATEENVOIE = "dateEnvoie";

public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}


@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_DEMANDES);
String CREATE_DEMANDES_TABLE = "CREATE TABLE " + TABLE_DEMANDES + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_XML + " TEXT," + KEY_STATUTENVOIE + " INTEGER," + KEY_DATEENVOIE + " DATETIME" + ")";
db.execSQL(CREATE_DEMANDES_TABLE);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
onCreate(db);
}

但是当我的 SOAP 服务在我的数据库上循环并查看未发送的数据时,我发现了一个旧数据,但我不明白为什么因为我在 onCreate 时删除了表,所以为什么我要找回这些数据?我重新安装了我的应用程序。

更新:

private static final int DATABASE_VERSION = 3;
private static final String DATABASE_NAME = "name.db";
private static String DB_NAME = "Solutis";
private static final String TABLE_DEMANDES = "demandes";
private static final String KEY_ID = "id";
private static final String KEY_XML = "xml";
private static final String KEY_STATUTENVOIE = "statutEnvoie";
private static final String KEY_DATEENVOIE = "dateEnvoie";

public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}


@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_DEMANDES_TABLE = "CREATE TABLE " + TABLE_DEMANDES + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_XML + " TEXT," + KEY_STATUTENVOIE + " INTEGER," + KEY_DATEENVOIE + " DATETIME" + ")";
db.execSQL(CREATE_DEMANDES_TABLE);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_DEMANDES);
onCreate(db);
}

最佳答案

onCreate() 在您根本没有数据库时调用(因此在全新安装时)。当您安装更新 数据库版本不同时,将调用onUpdate() 让您更新数据库。如果您想要全新安装而不管它是否更新,您还需要将数据库放入 onUpdate()

参见 SQLOpenHelper docs了解详情。

编辑

onUpdate() 在数据库版本更改时调用,在应用程序更新时调用。因此,如果您希望 SQLOpenHelper 每次都发挥作用,则必须在每次应用更新时修改您的 DATABASE_VERSION

关于android - 旧数据保存在我的 Android Sqlite 数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36792840/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com