第五章 SQLite数据库
SQLite数据库用于储存程序中的大量数据量数据,并对数据进行管理和维护。
5.1 SQLite数据库简介
SQLite数据库是一个轻量级数据库。它的设计目标时嵌入式的,而且占用资源非常低,在内存中只需要几百KB的储存空间。SQLite是遵循ACID的关系型数据库管理系统,ACID是指 原子性, 一致性, 隔离性, 持久性。比起MYSQL,PostGreSQL这两款开源数据库管理系统来说,SQLite的处理速度更快。
SQLite没有服务器进程,它通过文件保存数据,该文件是跨平台的,可以放在其他平台使用并且在保存数据时,支持null , integer , real(浮点数),text(字符串文本)和blod(二进制对象)五种数据类型。但实际上SQLite也接收varchar(n) , char(n) , decimal(p, s)等数据类型,只不过在运算或保存时会转化为对应的五种类型。因此,可以将各种类型的数据保存在各种字段中,而不用关心数据声明的数据类型。
5.2 数据库的创建
推荐使用SQLiteOpenHelper的子类创建数据库,因此需要创建一个类继承自 该类,并重写onCreate 和onUpgrade方法即可,示例代码如下:
public class MyHelper extends SQLiteOpenHelper {
public MyHelper(Context context) {
super(context, "luoxin88.db",null,2);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL("create table " +
"infomation(_id interger primary key autoincrement," +
"name varchar(20)," +
"price interger)");
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
}
上面的构造方法中指定数据库,这里是直接指定,也可以在在创建helper类对象时指定,onCreate方法在数据库第一次创建时调用。
总之创建一个类继承SQLiteHelper,这是安卓中操作数据库的工具类,然后我们要操作数据库时就从该类的实例对象中获取数据库。
5.3 数据库的使用
5.3.1 SQLite基本操作
前面介绍了创建数据库,接下来针对数据库操作的增删查改进行详细讲解
-
增加一条数据
public void insert(String name, String price) { SQLiteDatabase db = myHelper.getWritableDatabase();//获取可写的数据库连接 ContentValues values = new ContentValues(); values.put("name",name); values.put("price",price); db.insert("information",null,values);//表名称 , 缺省值, 要插入的数据对象ContentValues db.close(); }
-
修改一条数据
public int update(String name,String price) { SQLiteDatabase db = myHelper.getWritableDatabase();//获取可写的数据库连接 ContentValues values = new ContentValues(); values.put("price",price); int number = db.update("information",values,"name=?",new String[] { name}); db.close(); return number; }
update函数第一个参数是表名称,第二个参数是一个ContentValues对象。第三个参数为可选的where语句,即条件语句。第四个参数表示前面条件语句中占位符中的参数列表,他们会替换点前面的占位符。
-
删除一条数据
public int delete (long id) { SQLiteDatabase db = myHelper.getWritableDatabase(); int number = db.delete("information","_id=?",new String[]{ id+""}); db.close(); return number; }
第一个参数:表名 , 第二个参数:条件 , 第三个参数:占位符参数列表
-
查询一条数据
public boolean find(long id) { SQLiteDatabase db = myHelper.getReadableDatabase(); Cursor cursor = db.query("information",null,"_id=?",new String[]{ id+""},null,null,null); boolean resulit = cursor.moveToNext(); cursor.close(); return resulit; }
第一个参数:表名 , 第二个参数:查询的列名, 第三个参数:查询条件子句 , 第四个参数:条件查询子句的条件值, 第五个参数:分组方式, 第六个参数:接收having条件, 第七个参数表示排序方式
除了用上述的方法进行增删查改外,还可以用execSQL()方法通过SQL语句进行操作,如
db.execSQL("insert into information (name ,price ) values(?, ?)", new Object[]{
name, price});
5.3.2 SQLite中的事务
开启事务 : db.beginTransaction()
关闭事务:db.endTransaction()
5.4.1 ListView控件
它以列表的形式显示具体的数据内容,当时护具过多时会出现滚动条,并且能够根据数据长度自适应屏幕长度。