Sqlite中判断表、字段是否存在的方法

Sqlite中判断表、字段是否存在的方法

标签: sqliteandroid判定是否存在某字段
  1158人阅读  评论(0)  收藏  举报
  分类:
     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语句中判断某字段是否存在


[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. /** 
  2.  * 判断某表里某字段是否存在 
  3.  *  
  4.  * @param db 
  5.  * @param tableName 
  6.  * @param fieldName 
  7.  * @return 
  8.  */  
  9. private boolean isFieldExist(SQLiteDatabase db, String tableName, String fieldName) {  
  10.     String queryStr = "select sql from sqlite_master where type = 'table' and name = '%s'";  
  11.     queryStr = String.format(queryStr, tableName);  
  12.     Cursor c = db.rawQuery(queryStr, null);  
  13.     String tableCreateSql = null;  
  14.     try {  
  15.         if (c != null && c.moveToFirst()) {  
  16.             tableCreateSql = c.getString(c.getColumnIndex("sql"));  
  17.         }  
  18.     } finally {  
  19.         if (c != null)  
  20.             c.close();  
  21.     }  
  22.     if (tableCreateSql != null && tableCreateSql.contains(fieldName))  
  23.         return true;  
  24.     return false;  
  25. }  
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android数据存取之Databases 在Android平台上可以操作数据库,这是第一次接触Android时的惊艳之一。在Android平台上,绑定了SQLite数据库,这个数据库系统也是极具性格的,它的最大的应用场景是嵌入式系统,进一步了解可以参看这里。 如果有JDBC的经验,那么在这里会容易的多。Android操作数据库首先要通过一个 类:android.database.sqlite.SQLiteOpenHelper。它封装了如何打开一个数据库,其当然也包含如果数据库不存在 就创建这样的逻辑。看一个例子: view plaincopy to clipboardprint? 1. pubilc class DatabaseHelper extends SQLiteOpenHelper { 2. private static final String DATABASE_NAME = "com.roiding.simple.note"; 3. private static final int DATABASE_VERSION = 1; 4. private static final String NOTES_TABLE_NAME = "notes"; 5. 6. DatabaseHelper(Context context) { 7. super(context, DATABASE_NAME, null, DATABASE_VERSION); 8. } 9. 10. @Override 11. public void onCreate(SQLiteDatabase db) { 12. db.execSQL("CREATE TABLE " + NOTES_TABLE_NAME 13. + " (id integer primary key autoincrement, name text);"); 14. } 15. 16. @Override 17. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 18. db.execSQL("DROP TABLE IF EXISTS notes"); 19. onCreate(db); 20. } 21. } 这里面,如下的语句需要解释: • super(context, DATABASE_NAME, null, DATABASE_VERSION) 数据库连接的初始化,间的那个null,是一个CursorFactory参数,没有仔细研究这个参数,暂时置空吧。 • public void onCreate(SQLiteDatabase db) 这里面的onCreate是指数据库onCreate时,而不是DatabaseHelper的onCreate。也就是说,如果已经指定 database已经存在,那么在重新运行程序的时候,就不会执行这个方法了。要不然,岂不是每次重新启动程序都要重新创建一次数据库了!在这个方法,完成了数据库的创建工作。也就是那个execSQL()方法。 • public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 在程序的开发维护过程,数据库的结构可能会有变化,那么这个方法就有用处了。在DatabaseHelper这个对象一创建时,就已经把参数 DATABASE_VERSION传入,这样,如果Android发现此版本与现有版本不一致,就会调用这个onUpgrate方法。于是,可以在这里面实现一些数据的upgrade工作,比如说创建一个临时,将数据由临时转到新的结构。需要注意的是,这里面的onUpgrade是在版本不一致时调用,也就是说不管当前需要的版本高于现有版本还是低于现有版本,都会出发这个方法,类似的这种情况,就需要对oldVersion和 newVersion进行判断之后再决定使用什么策略来更新数据。 在Android,数据库存放在 /data/data/PACKAGE_NAME/databases 目录下。 接下来就可以使用这个Helper来操作数据库了,操作数据库也就无非是增、删、改、查。先看一个增的例子: view plaincopy to clipboardprint? 1. public static void insert(Context context, String s) { 2. DatabaseHelper

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值