只是为了澄清情况,举个例子:
public class MySQLStatements
SQLiteDatabase db;
SQLiteStatement recordInsert;
public SQLDatabaseAndroid (SQLiteDatabase db){
this.db=db;
}
public void tableCreateExecute () {
db.execSQL ("CREATE TABLE....");
}
public long recordInsertExecute (par1, par2 etc....) {
// let's precompile sql statement if it hasn't been previously used
recordInsert = (recordInsert == null) ?
recordInsert = db.compileStatement(recordInsert()) : recordInsert;
and next sql part.
上面的部分不是完全正确的 java 代码,但我相信它给出了我想要实现的一个很好的例子。Simply sql 语句只有在第一次使用时才会被预编译。接下来将其保留以备将来使用。
问题是您如何看待这样的解决方案。
还有一个什么时候可以创建 MySQLStatements 对象?可以在我从 SQLiteOpenHelper 派生的类的构造函数中完成最后一件事吗?但是通过 getWritableDatabase 方法获取 db 是否安全。在 onCreate、onUpdate 方法中,我可以跳过给定的 db 参数并使用之前在构造函数中获得的(通过 getWritableDatabase)吗?