一般数据库升级时,需要检测表中是否已存在相应字段(列),因为列名重复会报错。方法有很多,下面列举2种常见的方式:
1、根据 cursor.getColumnIndex(String columnName) 的返回值判断,如果为-1表示表中无此字段
/** * 方法1:检查某表列是否存在 * @param db * @param tableName 表名 * @param columnName 列名 * @return */ private boolean checkColumnExist1(SQLiteDatabase db, String tableName , String columnName) { boolean result = false ; Cursor cursor = null ; try{ //查询一行 cursor = db.rawQuery( "SELECT * FROM " + tableName + " LIMIT 0" , null ); result = cursor != null && cursor.getColumnIndex(columnName) != -1 ; }catch (Exception e){ Log.e(TAG,"checkColumnExists1..." + e.getMessage()) ; }finally{ if(null != cursor && !cursor.isClosed()){ cursor.close() ; } } return result ; }
2、通过查询sqlite的系统表 sqlite_master 来查找相应表里是否存在该字段,稍微换下语句也可以查找表是否存在
/** * 方法2:检查表中某列是否存在 * @param db * @param tableName 表名 * @param columnName 列名 * @return */ private boolean checkColumnExists2(SQLiteDatabase db, String tableName , String columnName) { boolean result = false ; Cursor cursor = null ; try{ cursor = db.rawQuery( "select * from sqlite_master where name = ? and sql like ?" , new String[]{tableName , "%" + columnName + "%"} ); result = null != cursor && cursor.moveToFirst() ; }catch (Exception e){ Log.e(TAG,"checkColumnExists2..." + e.getMessage()) ; }finally{ if(null != cursor && !cursor.isClosed()){ cursor.close() ; } } return result ; }
相关推荐
Android Database SQLite 多表操作源码,可以用android studio 跑起来没问题。是android 数据库SQLite很好的操作源码,支持多表操作。
android 存储 SQLite 数据存储 看完秒回SQLite,android 存储 SQLite 数据存储 看完秒回SQLite
Android的SQLite中DateTime类型数据的存取问题
在Android studio上实现了sqlite的数据的新建、查询、添加、删除等功能。
用python sqlite3给已经有的表增加字段。sql语句的写法,表名用自己的,其他的请严格区分大小写,要不然不会成功。
我们在使用ListView的时候需要和数据进行绑定,那么问题来了,如何获取SQLite数据库中的数据并动态的显示到ListView当中呢?其实过程很简单:首先要获取SQLite数据(当然首先你要创建一个SQLite数据库并填写了一些...
一个android读取sqlite数据库的数据并用listview显示demo,如有问题及时提醒。
Android 数据库SQLite 详解,简单学好SQLite
补充知识:Android studio sqllite数据库操作中关于表的创建和无法插入数据时的注意事项以及解决 创建表的sql语句 1.如果有条件的话。最好使用sqllite expert编辑代码测试,再复制到Android studio中 2.如果没有的话...
Android手机App程序中SQLite数据存储应用.pdf
Android四大存储方式之一-Sqlite数据存储,本实验以“日记本”的增删改查作为实例来使用SQLite
它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。 就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。 为什么要用 ...
详细讲述了在SQLITE中使用时间字段作索引进行SQL插入及查询操作的方法
Android 完成数据库的升级,给旧表中添加字段并保持原有数据,有界面操作提示。
Android Stdio开发的一个应用,运用Sqlite数据库和listview实现在前端进行对Sqlite的增删改查,数据库中的数据显示在Listview上,在Editetext上输入关键字会查询带有关键字的数据,点击Listview的每一行都可以对该行...
Android实验数据存储SQLite
Android+SQlite 简单的《学生信息管理系统》(实现基本增删改查) 此代码中还有与其相对应的apk文件(在SIMS/bin目录中),大家可先行放手机上看一下效果。 希望对初学者有一定的帮助。(本人自己编写)
Android 开发中使用 SQLite 数据库 简介: SQLite 是一款非常流行的嵌入式数据库,它支持 SQL 查询,并且只用很少的内存。Android 在运行时集成了 SQLite,所以每个 Android 应用程序都可以使用 SQLite 数据库。...
sqlite-android一个Android SQLite支持库
SQLite是一个包含一个自包含、无服务、零配制、事务型的SQL数据库引擎的软件库。它是世界上最流行的数据库引擎之一。并且,SQLite的源代码已经进入了公共域,可自由使用。 Android是用于移动设备上的一个包含一操作...