首页 > 代码库 > android中有关SQLite数据库的特性和概念加使用方法详解!
android中有关SQLite数据库的特性和概念加使用方法详解!
2. 数据库的操作流程
[使用条件] 准备数据库系统(MySQL) --> 创建数据库(DATABASE) --> 创建/设计数据表(TABLE) --> 数据操作
[数据操作] 连接数据库(Connection) --> 准备SQL语句(String sql) --> 执行SQL语句(Statement/PreparedStatement) --> 处理结果(int/ResultSet)
3. 使用SQLite
1) 创建数据库
openOrCreateDatabase(String name, int mode, CursorFactory factory)
String name:数据库文件名,例如users.db,使用SQLite可以不强求数据库文件的扩展名。
int mode:访问模式,应该使用常量。
CursorFactoty factory:游标工厂,通常使用null。
数据库创建成功后,会保存在 /data/data/包名/databases/ 下
2) 创建数据表
openOrCreateDatabase()的返回值为SQLiteDatabase对象,使用该对象的execSQL(String sql)方法即可执行SQL指令
CREATE TABLE dictionary (_id INTEGER PRIMARY KEY AUTOINCREMENT, en VARCHAR(50) NOT NULL UNIQUE, zh VARCHAR(50) NOT NULL);
3) 数据操作
使用execSQL(String sql)用于执行单一的没有变量的SQL语法,即不需要预编译的,通常表现为与数据表相关的操作,使用execSQL(String sql, Object[] bindArgs)用于执行与数据本身相关的操作。
execSQL()方法没有返回值,绝对不可以用于查询,亦不推荐用于执行增加、修改、删除操作。
android官方推荐execSQL()不用于执行任何增删改查的数据操作。
4) 认识ContentValues类
在数据操作中,使用insert / update ... 方法需要使用该类型的数据,其本质上是操作HashMap,其中Key对应数据表中的字段名,Value对应其操作的字段的数据
5) 使用db.insert(String table, String nullColumnHack, ContentValues values)插入记录
String table:表名
String nullColumnHack:仅当第3个参数values为null或者没有值(values.size==0)时需要,用于保全sql语句是完整的
ContentValues values:配置需要操作的字段与字段的值
返回值:出现错误时返回-1,否则返回插入的记录的ID
6) 使用db.update(table, values, whereClause, whereArgs)修改记录
String table:表名
ContentValues values:同上
whereClause:where子句,不要添加"where"字符,该参数值例如"_id=? or (username=? and password=?)"
whereArgs:where子句中的参数,应该与whereClause中的问号匹配
返回值:受影响的行数
7) 使用db.delete(String table, String whereClause, String[] whereArgs)删除记录
各参数的说明同上
返回值:受影响的行数
8) 使用db.query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)查询记录
String table:表名
String[] columns:字段列表
String selection:参见之前的whereClause
String[] selectionArgs:参见之前的whereArgs
String groupBy:Group By(分组)子句
String having:Having子句
String orderBy:Order By(排序)子句
String limit:limit(分页)子句
9) 认识Cursor
类似于JDBC的ResultSet接口
主要掌握getXXXX()和moveXXXX()方法
10) 认识SQLiteOpenHelper
构造方法的参数
Context context:上下文对象
String name:数据库名,文件名,例如tarena.db
CursorFactory factory:游标工厂,取值为null
int version:当前版本,不可低于同应用的历史版本号
onCreate():创建数据库时执行
onUpgrade():数据库版本升级时执行
getReadableDatabase()与getWritableDatabase(),其中,getReadableDatabase()会尝试获取可写的SQLiteDatabase,但是,当存储空间不足时,会返回只读的SQLiteDatabase,避免程序错误。
11) SimpleCursorAdapter
使用Cursor作为数据源的SimpleAdapter,其中,Cursor中必须包含 _id 的字段,参数String[] from的值为Cursor中的ColumnName
** 数据库中的char与varchar
char是定长的,如果字符串长度不足约定的长度,则在原字符右侧补空格,例如char(8)中存"xyz"将表现为"xyz ",varchar是变长的,长度由字符串本身决定。
** SQLite是对数据类型要求不严格的数据库
任意的字段都可以接受任意数据类型的数据,但是,不推荐随意填充数据
android中有关SQLite数据库的特性和概念加使用方法详解!
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。