一、SQLite数据库
1.什么是数据库?
存储大量的相似结构的数据。本质上是一个高效率的文件管理系统。提供快速的增删改查和多并发操作。
常用的数据库有:mysql,oracle,db2,sqlserver.
2.SQLLite数据库
android原生的数据库,轻量级(体积小,可移植性高,,功能完善,支持事务控制,被大量的嵌入到其它系统中作为数据库。),关系型数据库。
3.SQLite数据库的创建
(1)写一个类继承SQLiterOpenHelper,实现未实现的方法
public class MySQLiterOpenHelper extents SQLiterOpenHelper{
//参数说明:
/*
public MySQLiterOpenHelper(Content,name,factory,version)
Context:表示当前环境对象,里面有我们需要用到的常量和方法。有很多抽象方法,只定义具体功能,不实现。
name:数据库的名称,若为空则在内存中创建数据库。应用退出即销毁
factory:数据操作的游标,游标工厂,若为null则为默认工厂。
version:数据库的版本,从1开始。版本号必须是正整数且增加的。
*/
public MySQLiterOpenHelper(Content context){
super(content,"mydb.db",null,1);
}
//此方法会在第一次创建数据库时使用,可以用来初始化数据库表和表中的数据。
pubic void onCreate(SqllitDatabase db){
//在此方法中初始化数据库中的表。
}
//此方法会在数据库更新时调用,用来更新已有的数据库。通常版本更新时会触发该操作。
public void onUpdate(SQLliterDatabase database,int oldVersion,int newVersion){
//根据版本不同执行不同的操作,注意没有break,即用户若从版本1开始更新则接下来版本中的更新命令也需要执行。巧妙的利用了switch的特性,很棒!
switch(oldVersion){
case 1:
db.execute...
case 2:
db.execute...
case 3:
db.execute...
default:
...
}
}
}
(2)创建继承类的对象。
//下面的语句不会创建数据库,只有操作的时候才会创建。
SQLiterOpenHelper helper=new MySQLiterOpenHelper(this); //
(3)调用方法创建数据库
//执行如下操作中某一条可以创建数据库,下面的方法其实拿到的是同一对象,若为getWritableDatabase则返回的数据加锁,若为getReadableDatabase则返回的数据库没有锁机制,可根据需要调用不同的方法。
SQLiterDatabase database=helper.getWritableDatabase()
SQLiterDatabase database=helper.getReadableDatabase()
SQLiter数据的底层其实是在/data/data/[应用包名]/databases/xxx.xx文件中保存的数据。
三、数据库的CRUD
SQLiter支持数据类型,但在底层的实现中是不区分数据类型也不检查数据长度,底层无论什么数据,都是用字符串来存储。虽然SQLiter不检查数据类型,但在写sql时最好声明清楚数据类型,sql除了给应用程序看,还可以给人看,方便维护者知道数据类型和大小限制。
增删改用:
db.execSQL();
若执行时需要用到多个参数则使用new Object[]{}进行参数数组的初始化。
查询用:
db.rawQuery();
若执行时需要用到多个参数则使用new String[]{}进行参数数组的初始化。
a.游标用完要关闭。