(转载请注明出处:http://blog.csdn.net/buptgshengod)
1.背景
SQLite是嵌入式设备使用的一种轻量型数据库。可以通过执行sql语句对数据库进行操作,android也为其提供了完善的函数接口支持。下面就来实现一个简单的数据库,可以实现查询以及插入等功能。
例图如下:
1-1 数据库app
如果你的手机已经root过,将手机连到pc端eclipse我们可以在DDMS中查看这个数据库文件。路径是data/data/app的包/databases就可一看到自己命名的*.db格式的数据库文件了
1-2 DDMS截图
要想在pc端查看这个数据库文件的内容,我们需要先将这个.db文件copy到电脑上,我是用的是linux系统,可以使用系统自带的sqlite3来查看数据库文件。
进入shell,执行下面命令,进入数据库
sqlite3 /home/CORPUSERS/28852262/Desktop/sec_db
1-3 进入数据库
以下为sqlite 在linux下的使用方法
1、安装sqlite3
ubuntu下安装sqlite3直接在终端运行命令:
#apt-get
查看版本信息:
#sqlite3
2
当前目录下建立或打开test.db数据库文件,并进入sqlite命令终端,以sqlite>前缀标识:
#sqlite3
查看数据库文件信息命令(注意命令前带字符‘.‘):
sqlite>.database
查看所有表的创建语句:
sqlite>.schema
查看指定表的创建语句:
sqlite>.schema
以sql语句的形式列出表内容:
sqlite>.dump
设置显示信息的分隔符:
sqlite>.separator
Example:设置显示信息以‘:’分隔
sqlite>.separator
设置显示模式:
sqlite>.mode
Example:默认为list,设置为column,其他模式可通过.help查看mode相关内容
sqlite>.mode
输出帮助信息:
sqlite>.help
设置每一列的显示宽度:
sqlite>.width
Example:设置宽度为2
sqlite>.width
列出当前显示格式的配置:
sqlite>.show
退出sqlite终端命令:
sqlite>.quit
或
sqlite>.exit
3、sqlite3指令
sql的指令格式:所有sql指令都是以分号(;)结尾,两个减号(--)则表示注释。
如:
sqlite>create
该语句创建一个记录学生信息的数据表。
3.1
NULL:标识一个NULL值
INTERGER:整数类型
REAL:浮点数
TEXT:字符串
BLOB:二进制数
3.2
Sqlite常用约束条件如下:
PRIMARY
1)主键的值必须唯一,用于标识每一条记录,如学生的学号
2)主键同时也是一个索引,通过主键查找记录速度较快
3)主键如果是整数类型,该列的值可以自动增长
NOT
约束列记录不能为空,否则报错
UNIQUE
除主键外,约束其他列的数据的值唯一
CHECK
约束该列的值必须符合条件才可存入
DEFAULT
列数据中的值基本都是一样的,这样的字段列可设为默认值
3.3
1)建立数据表
create
table_name是要创建数据表名称,fieldx是数据表内字段名称,typex则是字段类型。
例,建立一个简单的学生信息表,它包含学号与姓名等学生信息:
create
2)添加数据记录
insert
valx为需要存入字段的值。
例,往学生信息表添加数据:
Insert
3)修改数据记录
update
where是sql语句中用于条件判断的命令,expression为判断表达式
例,修改学生信息表学号为0001的数据记录:
update
4)删除数据记录
delete
不加判断条件则清空表所有数据记录。
例,删除学生信息表学号为0001的数据记录:
delete
5)查询数据记录
select指令基本格式:
select
a查询输出所有数据记录
select
b限制输出数据记录数量
select
c升序输出数据记录
select
d降序输出数据记录
select
e条件查询
select
select
select
f查询记录数目
select
g区分列数据
select
有一些字段的值可能会重复出现,distinct去掉重复项,将列中各字段值单个列出。
6)建立索引
当说数据表存在大量记录,索引有助于加快查找数据表速度。
create
例,针对学生表stu_no字段,建立一个索引:
create
建立完成后,sqlite3在对该字段查询时,会自动使用该索引。
7)删除数据表或索引
drop
drop
输入相应命令我们看到了对数据库的所有操作。
1-4 数据库操作
2.代码
代码分两部分,第一部分dbHelper,继承android提供的类SQLiteOpenHelper用来管理数据库。
第一部分
这个类的基本架构如下所示,包括建表,更新,命名等。此外我们如果要对数据库增添插入,查询,修改等功能的时候,也要写在这个类里。
public class dbhelp extends SQLiteOpenHelper{ public dbhelp(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } }
第二部分
这个就是数据库的调用,首先生成一个dbHelper对象,因为我们要将数据库内容显示在listivew里,我们要建立一 个curse来连接数据库和适配器adapter,最后用listview输出这个adapter即可。
db=new dbHelper(MainActivity.this); myCursor=db.select(); SimpleCursorAdapter adpater=new SimpleCursorAdapter(this , R.layout.test, myCursor, new String[]{dbHelper.FIELD_TITLE}, new int[]{R.id.topTextView}); lv.setAdapter(adpater);