Phonegap app SQLite db初始设置

时间:2012-08-02 08:32:23

标签: javascript android ios html5 cordova

首次执行时构建应用程序数据库架构的最佳做法是什么?

换句话说,我想要找到的是:

SQLite不支持以逗号分隔的查询作为一个语句批处理执行。如何替换它以使代码保持未来证明? (我没有看到自己把所有的create语句都放在tx.executeSQL(“”)中依次链接它会把我的代码变成一个可怕的cr * p)。

1 个答案:

答案 0 :(得分:2)

我在本机代码以及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;
    }

虽然这很乏味,但它可以保证您的数据库在未来的证明,并在运行时调用查询。这涵盖了您的需求。

我希望这会有所帮助:)