android中的第一个数据库创建
我有一个应用程序,目前还没有使用数据库。现在我将更新我的应用程序,这个应用程序包含一个数据库。我对此很好奇。在数据库android中的第一个数据库创建,android,Android,我有一个应用程序,目前还没有使用数据库。现在我将更新我的应用程序,这个应用程序包含一个数据库。我对此很好奇。在数据库onCreate或onUpgrade中,哪种方法将调用更新后的手机?当您第一次创建数据库时,将调用onCreate()方法。如果升级数据库版本,则会调用该时间onUpgrade()方法。第一次如果数据库不存在,onCreate()方法将运行 如果数据库存在,并且您当前的数据库版本高于安装的版本,则将运行onUpgrade(),您应该在onUpgrade方法中检查版本并执行所需操作
onCreate
或onUpgrade
中,哪种方法将调用更新后的手机?当您第一次创建数据库时,将调用onCreate()
方法。如果升级数据库版本,则会调用该时间onUpgrade()
方法。第一次如果数据库不存在,onCreate()方法将运行
如果数据库存在,并且您当前的数据库版本高于安装的版本,则将运行onUpgrade(),您应该在onUpgrade方法中检查版本并执行所需操作
下面是dbHandler.java类的一个示例
package com.app.util;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Milad
*/
public class DBHandler extends SQLiteOpenHelper {
private static final String DB_NAME = "YourDbName";
private static final int DB_VERSION = 1;
public DBHandler(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
//Create firstTable
db.execSQL("CREATE TABLE TEST ( _id INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion >2) {
db.execSQL("DROP TABLE IF EXISTS TEST");
onCreate(db);
}
}
}
如果我想在升级时保护表中的数据,我应该怎么做?@Okan您应该在onUpgrade中做新的更改,就像表更改一样,添加列和。。。如果您的数据库未更改,则不需要更新数据库版本,旧数据库和数据将保持不变。您可以给出添加列的示例吗?
@Override public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){if(oldVersion<6){db.execSQL(“ALTER TABLE TestTable ADD ColumnName VARCHAR DEFAULT null”);}}