Android:创建SQLite数据库和表的最佳位置是什么
我必须在android应用程序中创建近5-6个表。创建SQLite数据库和5-6表的最佳位置是什么?我可以在初始活动启动时编写所有这些逻辑(使用SQLite open helper方法),但如果这样做,则每次初始活动启动时都会调用它。这意味着每次应用程序启动时,都会执行这些数据库和表的创建逻辑。任何人都可以告诉我们这样做的最佳实践。您可以在主活动中创建数据库和表 但在创建数据库之前,您可以检查Android:创建SQLite数据库和表的最佳位置是什么,android,sqliteopenhelper,Android,Sqliteopenhelper,我必须在android应用程序中创建近5-6个表。创建SQLite数据库和5-6表的最佳位置是什么?我可以在初始活动启动时编写所有这些逻辑(使用SQLite open helper方法),但如果这样做,则每次初始活动启动时都会调用它。这意味着每次应用程序启动时,都会执行这些数据库和表的创建逻辑。任何人都可以告诉我们这样做的最佳实践。您可以在主活动中创建数据库和表 但在创建数据库之前,您可以检查 if(exits()) { // do not create } else { // cr
if(exits())
{
// do not create
}
else
{
// create here
}
如果您编写一个类来扩展SQLiteOpenHelper,并在onCreate方法中创建表,那么它将只执行一次。仅当您从设备中完全删除数据/应用程序时,帮助程序才会重新创建数据 首次创建数据库时调用From。这是创建表和初始填充表的地方 给你更多的信息。 在用于扩展SQLiteOpenHelper的类的构造函数中,调用超级构造函数,它接受一些参数。其中之一是数据库版本 如果传递给超级构造函数的此db_版本与上次传递的版本不同,则会调用onUpgrade方法,在onUpgrade()方法中可以调用onCreate() 因此:
有创建/更新/删除数据库的方法吗?个人,我使用选项:
创建表(如果不存在)
因此,打开的辅助对象具有以下参数:
private static final int VERSION_BDD = 1;
我认为openHelper不会在每次启动时重新创建每个表。您可以使用一个内部类来扩展SQLiteOpenHelper,并重写public void onCreate(SqLiteDatabase sqlLiteDatabase)和public void onUpgrade(SqLiteDatabase SqLiteDatabase,int oldVersion,int newVersion)方法 当磁盘中不存在数据库并且helper类需要创建新数据库时,将调用onCreate 当数据库版本不匹配时,调用onUpgrade。磁盘上db的版本需要升级到新版本
private static final class PatientDatabaseHelper extends SQLiteOpenHelper {
private static final String TAG = "PatientProvider";
private static final String DATABASE_NAME = "myPatient.db";
private static final int DATABASE_VERSION = 1;
private static final String PATIENT_TABLE = "PATIENT";
private static final String CREATE_TABLE_PATIENT =
"create table " + PATIENT_TABLE + " ("
+ PATIENT_KEY_ID + " integer primary key autoincrement, "
+ PATIENT_NAME + " TEXT NOT NULL, "
+ PATIENT_FIRST_NAME + " TEXT NOT NULL, "
+ PATIENT_TEL + " TEXT, "
+ PATIENT_GSM1 + " TEXT, "
+ PATIENT_GSM2 + " TEXT, "
+ PATIENT_BIRTHDATE + " DATE); ";
public PatientDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(CREATE_TABLE_PATIENT);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
//simple case sample - droppin the table
sqLiteDatabase.execSQL("DROP TABLE IF IT EXISTS " + PATIENT_TABLE);
//Create a new One
onCreate(sqLiteDatabase);
}
}
取决于android的目标版本,但我认为一个好的方法是使用ContentProvider