sqlite会自动维护一个系统表sqlite_master,该表存储了我们所创建的各个table,view,trigger等等信息。有时数据库升级时,由于等等原因,我们可能需要增加表、字段等等。可以采取以下方法来判断数据库中是否存在某表、字段等等。
select
*
from
sqlite_master
where
type =
'table'
and
name =
'表名'
如果查不到指定表名的信息,则表示该表不存在
sqlite_master表数据字段:
type: 类型,取值一般为table,view
name:
tbl_name: 表名
rootpage:
sql: 创建表或者视图的sql语句,可以从该sql语句中判断某字段是否存在
-
-
- *
- *@paramdb
- *@paramtableName
- *@paramfieldName
- *@return
- */
- privatebooleanisFieldExist(sqliteDatabasedb,StringtableName,StringfieldName){
- StringqueryStr="selectsqlfromsqlite_masterwheretype='table'andname='%s'";
- queryStr=String.format(queryStr,tableName);
- Cursorc=db.rawQuery(queryStr,null);
- StringtableCreatesql=null;
- try{
- if(c!=null&&c.moveToFirst()){
- tableCreatesql=c.getString(c.getColumnIndex("sql"));
- }
- }finally{
- null)
- c.close();
- if(tableCreatesql!=null&&tableCreatesql.contains(fieldName))
- returntrue;
- false;
- }