android 检测sqlite数据表是否存在

/**
* 方法:检查某表是否存在
*/
synchronized public boolean isTableExist(String tableName) {
boolean result = false;
if (tableName == null) {
return false;
}
SQLiteDatabase db;
Cursor cursor;
try {
db = dbHelper.getWritableDatabase();
if (db.isOpen()) {
String sql = "select count(*) as c from sqlite_master where type ='table' and name ='" + tableName.trim() + "' ";
cursor = db.rawQuery(sql, null);
if (cursor.moveToNext()) {
int count = cursor.getInt(0);
if (count > 0) {
result = true;
}
}
}
} catch (Exception e) {
// TODO: handle exception
}
return result;
}


android 检测sqlite数据表中字段(列)是否存在 (转)

原文摘自http://www.tuicool.com/articles/jmmMnu

一般数据库升级时,需要检测表中是否已存在相应字段(列),因为列名重复会报错。方法有很多,下面列举2种常见的方式:

1、根据 cursor.getColumnIndex(String columnName) 的返回值判断,如果为-1表示表中无此字段

/***方法1:检查某表列是否存在*@paramdb*@paramtableName表名*@paramcolumnName列名*@return*/privatebooleancheckColumnExist1(SQLiteDatabasedb,StringtableName,StringcolumnName){booleanresult=false;Cursorcursor=null;try{//查询一行cursor=db.rawQuery("SELECT*FROM"+tableName+"LIMIT0",null);result=cursor!=null&&cursor.getColumnIndex(columnName)!=-1;}catch(Exceptione){Log.e(TAG,"checkColumnExists1..."+e.getMessage());}finally{if(null!=cursor&&!cursor.isClosed()){cursor.close();}}returnresult;}

2、通过查询sqlite的系统表sqlite_master来查找相应表里是否存在该字段,稍微换下语句也可以查找表是否存在

/***方法2:检查表中某列是否存在*@paramdb*@paramtableName表名*@paramcolumnName列名*@return*/privatebooleancheckColumnExists2(SQLiteDatabasedb,StringtableName,StringcolumnName){booleanresult=false;Cursorcursor=null;try{cursor=db.rawQuery("select*fromsqlite_masterwherename=?andsqllike?",newString[]{tableName,"%"+columnName+"%"});result=null!=cursor&&cursor.moveToFirst();}catch(Exceptione){Log.e(TAG,"checkColumnExists2..."+e.getMessage());}finally{if(null!=cursor&&!cursor.isClosed()){cursor.close();}}returnresult;}


更多相关文章

  1. android videoView播放视频,对播放结束的监听方法
  2. Android 获取本机唯一序列号 和可变UUID方法
  3. Android Studio引用远程依赖包时下载不了jar包的解决方法
  4. Android杀死进程方法
  5. 【Android】方法数查看工具---DexCount
  6. Android之下获取屏幕分辨率的方法

随机推荐

  1. Android Stagefright MPEG4Writer分析
  2. Android - 浅谈获取时间
  3. android camera recording[转]
  4. Android 下陀螺仪、加速度和磁场传感器数
  5. 阅读《Android 从入门到精通》(21)——滚动
  6. Android LayoutInflater 源码解析
  7. Android 整屏截图与区域指定view或layout
  8. Android实现Tab切换效果总结
  9. [Android记录]Eclipse关联android源码
  10. Gradle导入so文件