在首次执行时构建应用程序数据库模式的最佳实践是什么?Phonegap应用程序SQLite数据库初始设置
换句话说什么,我试图找出是:
SQLite不支持作为一个批处理语句被执行逗号分隔的查询。如何替换,以便代码保留将来的证据? (我没有看到自己把所有的创建语句放在tx.executeSQL(“”)中,这会使我的代码变成可怕的cr * p)。
在首次执行时构建应用程序数据库模式的最佳实践是什么?Phonegap应用程序SQLite数据库初始设置
换句话说什么,我试图找出是:
SQLite不支持作为一个批处理语句被执行逗号分隔的查询。如何替换,以便代码保留将来的证据? (我没有看到自己把所有的创建语句放在tx.executeSQL(“”)中,这会使我的代码变成可怕的cr * p)。
我在本地代码以及Sencha/Phonegap中做的是使用我引用的DatabaseHelper类。在这种类,你可以看到数据库的使用版本:
public DataBaseHelper(Context context) {
super(context, DB_NAME, null, 2);
this.myContext = context;
}
public void createDataBase() throws IOException {
boolean dbExist = checkDataBase();
if (dbExist) {
// do nothing - database already exist
openDataBase();
int cVersion = myDataBase.getVersion();
if(cVersion != 2){
onUpgrade(myDataBase, myDataBase.getVersion(), 2);}
close();
} ....}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
this.getReadableDatabase();
try{
db.execSQL("ADD SQL QUERY HERE TO ADD TABLE");
}
catch(Exception e){}
}
private boolean checkDataBase() {
SQLiteDatabase checkDB = null;
try {
String myPath = DB_PATH + DB_NAME;
checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
} catch (SQLiteException e) {
// database does't exist yet.
}
if (checkDB != null) {
checkDB.close();
}
return checkDB != null ? true : false;
}
虽然这是乏味的它让你的数据库,面向未来,查询被称为在运行时。这涵盖了您的两个需求。
我希望这有助于:)
也许你应该尝试使用预填充的数据库? – 2012-08-02 08:43:26
不需要。由于具体的原因,我需要在运行时构建模式。 Thx – CoolStraw 2012-08-02 08:55:28