android 开发 SQLitdatabase的使用

 

一.SQLite 的介绍

1.SQLite 简介

SQLite 是一个嵌入式数据库引擎,针对内存等资源有限的设备(如手机、PDA、MP3)

提供的一种高效的数据库引擎。它有如下特征:轻量级、独立性、隔离性、跨平台、多语言

接口、安全性。SQLite 数据库没有服务器进程。所有的内容包含在同一个单文件中。该文

件是跨平台的,可以自由复制。基于其自身的先天优势,SQLite 在嵌入式领域得到广泛应

用。

2.SQLite 数据类型

一般数据采用的固定的静态数据类型,而SQLite 采用的是动态数据类型,会根据存入

值自动判断。SQLite 具有以下五种数据类型:

NULL: 这个值为空值

INTEGER: 值被标识为整数,依据值的大小可以依次被存储为1,2,3,4,5,6,7,8.

REAL: 所有值都是浮动的数值,被存储为8字节的IEEE 浮动标记序号.

TEXT: 值为文本字符串,使用数据库编码存储(TUTF-8, UTF-16BE or UTF-16-LE).

BLOB: 值是BLOB 数据块,以输入的数据格式进行存储。如何输入就如何存储,不改变

格式.

一、SQLiteDatabase 的介绍

Android 提供了创建和是用SQLite 数据库的API。SQLiteDatabase 代表一个数据库对

象,提供了操作数据库的一些方法。在Android 的SDK 目录下有sqlite3工具,我们可以利

用它创建数据库、创建表和执行一些SQL 语句。下面是SQLiteDatabase 的常用方法。

SQLiteDatabase 的常用方法

方法名称方法描述

openOrCreateDatabase(String

path,SQLiteDatabase.CursorFactory factory)

打开或创建数据库

insert(String table,String nullColumnHack,ContentValues

values)

添加一条记录

delete(String table,String whereClause,String[] 删除一条记录

whereArgs)

query(String table,String[] columns,String

selection,String[] selectionArgs,String groupBy,String

having,String orderBy)

查询一条记录

update(String table,ContentValues values,String

whereClause,String[] whereArgs)

修改记录

execSQL(String sql) 执行一条SQL 语句

close() 关闭数据库

1、打开或者创建数据库

在Android 中以使用SQLiteDatabase 的静态方法openOrCreateDatabase(String

path,SQLiteDatabae.CursorFactory factory)打开或者创建一个数据库。它会自动去检测

是否存在这个数据库,如果存在则打开,不存在则创建一个数据库;创建成功则返回一个

SQLiteDatabase 对象,否则抛出异常FileNotFoundException。

下面是创建名为“stu.db”数据库的代码:

1 db=SQLiteDatabase.openOrCreateDatabase("/data/data/com.lingdududu.db/d

atabases/stu.db",null);

2、创建表

创建一张表很简单。首先,编写创建表的SQL 语句,然后,调用SQLiteDatabase 的

execSQL()方法来执行SQL 语句便可以创建一张表了。

下面的代码创建了一张用户表,属性列为:_id(主键并且自动增加)、sname(学生姓

名)、snumber(学号)

2 private void createTable(SQLiteDatabase db){

3

4 //创建表SQL 语句

5 String stu_table="create table usertable(_id integer primary key

autoincrement,sname text,snumber text)";

6

7 //执行SQL 语句

8 db.execSQL(stu_table);

9 }

3、插入数据

插入数据有两种方法:

①SQLiteDatabase 的insert(String table,String nullColumnHack,ContentValues

values)方法,参数一是表名称,参数二是空列的默认值,参数三是ContentValues 类型的

一个封装了列名称和列值的Map;

②编写插入数据的SQL 语句,直接调用SQLiteDatabase 的execSQL()方法来执行

第一种方法的代码:

10 private void insert(SQLiteDatabase db) {

11

12 //实例化常量值

13 ContentValues cValue = new ContentValues();

14

15 //添加用户名

16 cValue.put("sname","xiaoming");

17

18 //添加密码

19 cValue.put("snumber","01005");

20

21 //调用insert()方法插入数据

22 db.insert("stu_table",null,cValue);

23 }

第二种方法的代码:

24 private void insert(SQLiteDatabase db){

25

26 //插入数据SQL 语句

27 String stu_sql="insert into stu_table(sname,snumber)

values('xiaoming','01005')";

28

29 //执行SQL 语句

30 db.execSQL(sql);

31 }

4、删除数据

删除数据也有两种方法:

① 调用SQLiteDatabase 的delete(String table,String whereClause,String[]

whereArgs)方法,参数一是表名称,参数二是删除条件,参数三是删除条件值数组;

②编写删除SQL 语句,调用SQLiteDatabase 的execSQL()方法来执行删除。

第一种方法的代码:

32 private void delete(SQLiteDatabase db) {

33

34 //删除条件

35 String whereClause = "_id=?";

36

37 //删除条件参数

38 String[] whereArgs = {String.valueOf(2)};

39

40 //执行删除

41 db.delete("stu_table",whereClause,whereArgs);

42 }

第二种方法的代码:

43 private void delete(SQLiteDatabase db) {

44

45 //删除SQL 语句

46 String sql = "delete from stu_table where _id = 6";

47

48 //执行SQL 语句

49 db.execSQL(sql);

50 }

5、修改数据

修改数据有两种方法:

① 调用SQLiteDatabase 的update(String table,ContentValues values,String

whereClause, String[] whereArgs)方法。参数是表名称,参数是更行列ContentValues

类型的键值对(Map),参数是更新条件(where 字句),参数是更新条件数组。

②编写更新的SQL 语句,调用SQLiteDatabase 的execSQL 执行更新。

第一种方法的代码:

51 private void update(SQLiteDatabase db) {

52

53 //实例化内容值

54 ContentValues values = new ContentValues();

55

56 //在values 中添加内容

57 values.put("snumber","101003");

58

59 //修改条件

60 String whereClause = "id=?";

61

62 //修改添加参数

63 String[] whereArgs={String.valuesOf(1)};

64

65 //修改

66 db.update("usertable",values,whereClause,whereArgs);

67 }

第二种方法的代码:

68 private void update(SQLiteDatabase db){

69

70 //修改SQL 语句

71 String sql = "update stu_table set snumber = 654321 where id = 1";

72

73 //执行SQL

74 db.execSQL(sql);

75 }

6、查询数据

在Android 中查询数据是通过Cursor 类来实现的,当我们使用SQLiteDatabase.query()

方法时,会得到一个Cursor 对象,Cursor 指向的就是每一条数据。它提供了很多有关查询

的方法,具体方法如下:

public Cursor query(String table,String[] columns,String selection,String[]

selectionArgs,String groupBy,String having,String orderBy,String limit);

各个参数的意义说明:

①table:表名称

②columns:列名称数组

③selection:条件字句,相当于where

④selectionArgs:条件字句,参数数组

⑤groupBy:分组列

⑥having:分组条件

⑦orderBy:排序列

⑧limit:分页查询限制

⑨Cursor:返回值,相当于结果集ResultSet

Cursor 是一个游标接口,提供了遍历查询结果的方法,如移动指针方法move(),获得

列值方法getString()等.

Cursor 游标常用方法

方法名称方法描述

getCount() 获得总的数据项数

isFirst() 判断是否第一条记录

isLast() 判断是否最后一条记录

moveToFirst() 移动到第一条记录

moveToLast() 移动到最后一条记录

move(int offset) 移动到指定记录

moveToNext() 移动到下一条记录

moveToPrevious() 移动到上一条记录

getColumnIndexOrThrow(String

columnName)

根据列名称获得列索引

getInt(int columnIndex) 获得指定列索引的int 类型值

getString(int columnIndex) 获得指定列缩影的String 类型值

下面就是用Cursor 来查询数据库中的数据,具体代码如下:

76 private void query(SQLiteDatabase db)

77 {

78

79 //查询获得游标

80 Cursor cursor = db.query

("usertable",null,null,null,null,null,null);

81

82 //判断游标是否为空

83 if(cursor.moveToFirst() {

84

85 //遍历游标

86 for(int i=0;i<cursor.getCount();i++){

87

88 cursor.move(i);

89

90 //获得ID

91 int id = cursor.getInt(0);

92

93 //获得用户名

94 String username=cursor.getString(1);

95

96 //获得密码

97 String password=cursor.getString(2);

98

99 //输出用户信息

100 System.out.println(id+":"+sname+":"+snumber);

101 }

102 }

103 }

7、删除指定表

编写插入数据的SQL 语句,直接调用SQLiteDatabase 的execSQL()方法来执行

104 private void drop(SQLiteDatabase db){

105 //删除表的SQL 语句

106 String sql ="DROP TABLE stu_table";

107 //执行SQL

108 db.execSQL(sql);

109 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值