您的位置:首页 > 移动开发 > Android开发

android中有关SQLite数据库的特性和概念加使用方法详解!

2014-10-20 17:51 627 查看
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是对数据类型要求不严格的数据库

任意的字段都可以接受任意数据类型的数据,但是,不推荐随意填充数据

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: