Android实现创建或升级数据库时执行语句
本文实例讲述了Android创建或升级数据库时执行的语句,如果是创建或升级数据库,请使用带List参数的构造方法,带SQL语句的构造方法将在数据库创建或升级时执行。
具体程序代码如下:
importjava.util.List; importandroid.content.Context; importandroid.database.sqlite.SQLiteDatabase; importandroid.database.sqlite.SQLiteDatabase.CursorFactory; importandroid.database.sqlite.SQLiteOpenHelper; publicclassSimpleSQLiteOpenHelperextendsSQLiteOpenHelper{ privatestaticfinalintINIT_VERSION=1; /** *创建或升级数据库时执行的语句。 */ privateList<String>sqlStatementExed; /** *如果是创建或升级数据库,请使用带List参数的构造方法。 * *@paramcontext *tousetoopenorcreatethedatabase *@paramname *ofthedatabasefile,ornullforanin-memorydatabase *@paramfactory *touseforcreatingcursorobjects,ornullforthedefault *@paramversion *numberofthedatabase(startingat1);ifthedatabaseis *older,onUpgrade(SQLiteDatabase,int,int)willbeusedto *upgradethedatabase;ifthedatabaseisnewer, *onDowngrade(SQLiteDatabase,int,int)willbeusedto *downgradethedatabase */ publicSimpleSQLiteOpenHelper(Contextcontext,Stringname, CursorFactoryfactory,intversion){ super(context,name,factory,version); sqlStatementExed=null; } /** *带SQL语句的构造方法。此SQL语句将在数据库创建或升级时执行。 * *@paramcontext *tousetoopenorcreatethedatabase *@paramname *ofthedatabasefile,ornullforanin-memorydatabase *@paramfactory *touseforcreatingcursorobjects,ornullforthedefault *@paramversion *numberofthedatabase(startingat1);ifthedatabaseis *older,onUpgrade(SQLiteDatabase,int,int)willbeusedto *upgradethedatabase;ifthedatabaseisnewer, *onDowngrade(SQLiteDatabase,int,int)willbeusedto *downgradethedatabase *@paramsqlStatementExed *在数据库创建或升级的时候将执行的语句。 */ publicSimpleSQLiteOpenHelper(Contextcontext,Stringname, CursorFactoryfactory,intversion,List<String>sqlStatementExed){ super(context,name,factory,version); this.sqlStatementExed=sqlStatementExed; } /** *如果是创建或升级数据库,请使用带List参数的构造方法。 *@paramcontext *tousetoopenorcreatethedatabase *@paramname *ofthedatabasefile,ornullforanin-memorydatabase *@paramversion *numberofthedatabase(startingat1);ifthedatabaseis *older,onUpgrade(SQLiteDatabase,int,int)willbeusedto *upgradethedatabase;ifthedatabaseisnewer, *onDowngrade(SQLiteDatabase,int,int)willbeusedto *downgradethedatabase */ publicSimpleSQLiteOpenHelper(Contextcontext,Stringname,intversion){ super(context,name,null,version); sqlStatementExed=null; } /** *如果是创建或升级数据库,请使用带List参数的构造方法。 *@paramcontext *tousetoopenorcreatethedatabase *@paramname *ofthedatabasefile,ornullforanin-memorydatabase */ publicSimpleSQLiteOpenHelper(Contextcontext,Stringname){ super(context,name,null,INIT_VERSION); sqlStatementExed=null; } /** *如果是创建或升级数据库,请使用带List参数的构造方法。 * *@paramcontext *tousetoopenorcreatethedatabase *@paramname *ofthedatabasefile,ornullforanin-memorydatabase *@paramversion *numberofthedatabase(startingat1);ifthedatabaseis *older,onUpgrade(SQLiteDatabase,int,int)willbeusedto *upgradethedatabase;ifthedatabaseisnewer, *onDowngrade(SQLiteDatabase,int,int)willbeusedto *downgradethedatabase *@paramsqlCreateStatement *在创建或升级数据库时要执行的语句。 */ publicSimpleSQLiteOpenHelper(Contextcontext,Stringname,intversion, List<String>sqlCreateStatement){ super(context,name,null,version); this.sqlStatementExed=sqlCreateStatement; } /** *@paramcontext *@paramname *@paramsqlCreateStatement *在创建或升级数据库时要执行的语句。 */ publicSimpleSQLiteOpenHelper(Contextcontext,Stringname, List<String>sqlCreateStatement){ super(context,name,null,INIT_VERSION); this.sqlStatementExed=sqlCreateStatement; } /* *(non-Javadoc) *@see *android.database.sqlite.SQLiteOpenHelper#onCreate(android.database.sqlite *.SQLiteDatabase) */ @Override @Deprecated publicvoidonCreate(SQLiteDatabasedb){ exeSqlStatementExed(db); } /* *(non-Javadoc) *@see *android.database.sqlite.SQLiteOpenHelper#onUpgrade(android.database.sqlite *.SQLiteDatabase,int,int) */ @Override @Deprecated publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){ if(newVersion>oldVersion){ exeSqlStatementExed(db); } } /** *初始化或升级数据库时执行的SQL语句。。 */ privatevoidexeSqlStatementExed(SQLiteDatabasedb){ if(sqlStatementExed!=null){ for(Stringstatement:sqlStatementExed){ db.execSQL(statement); } } } }
希望本文所述方法对于大家进行Android程序开发能够起到一定的帮助作用。