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程序开发能够起到一定的帮助作用。