使用嵌入式关系型SQLite数据库存储数据
使用嵌入式关系型SQLite数据库存储数据
除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据。在Android的平台上,集成了一个嵌入式关系型数据库—SQLite,SQLite3支持NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型只有五种,但实际上sqlite3也接受varchar(n)、char(n)、decimal(p,s)等数据类型,
只不过在运算或保存时会转成对应的五种数据类型。
SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么;
SQLite中还可以进行解析不部分的SQL语句,所以用起来挺方便的;
在使用SQLite中,Android系统为什么实现了SQLiteOpenHelper的抽象类,所以我去实现其中的方法,来让我们对数据进行管理创建于版本管理;
在类SQLiteOpenHelper的帮助类是,
我们去实现 onCreate(SQLiteDatabase db), onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)这两个方法
①:public abstract void onCreate (SQLiteDatabase db) 当数据库第一次被创建的时候去调用,在onCreate()方法里面可以生成数据库表结构和添加一些应用使用到的初始化数据,返回DataBase
②:public abstract void onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion) 当数据库需要更新的时候调用,调用的时候需要先删除原来的表,或者去更新新的版本号
当然我们还会用到getReadableDatabase()与个头WritableDatabase()这两个方法来进行获取数据的实例
但getWritableDatabase() 方法以读写方式打开数据库,一旦数据库的磁盘空间满了,数据库就只能读而不能写;
getReadableDatabase()方法先以读写方式打开数据库,如果数据库的磁盘空间满了,就会打开失败,
不过很幸运的时候,加入打开失败,还是继续尝试用只读方式去打开数据库
Demo:以学生信息管理来举例
Student_Model:
- package com.jiangqq.model;
- import java.io.Serializable;
- /**
- * 学生类的model类
- *
- * @author jiangqq
- *
- */
- public class Student implements Serializable
- {
- private Integer stu_id;
- private String name;
- private String gender;
- private Short age;
- private String telphone;
- public Student() {
- super();
- }
- public Student(String name, String gender, Short age, String telphone) {
- super();
- this.name = name;
- this.gender = gender;
- this.age = age;
- this.telphone = telphone;
- }
- public Student(Integer id, String name, String gender, Short age,
- String telphone) {
- super();
- this.stu_id = id;
- this.name = name;
- this.gender = gender;
- this.age = age;
- this.telphone = telphone;
- }
- public Integer getId() {
- return stu_id;
- }
- public void setId(Integer id) {
- this.stu_id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getGender() {
- return gender;
- }
- public void setGender(String gender) {
- this.gender = gender;
- }
- public Short getAge() {
- return age;
- }
- public void setAge(Short age) {
- this.age = age;
- }
- public String getTelphone() {
- return telphone;
- }
- public void setTelphone(String telphone) {
- this.telphone = telphone;
- }
- @Override
- public String toString() {
- return "Student [id=" + stu_id + ", name=" + name + ", gender="
- + gender + ", age=" + age + ", telphone=" + telphone + "]";
- }
- }
首先先写数据库帮助类:
- package com.jiangqq.service;
- import android.content.Context;
- import android.database.sqlite.SQLiteDatabase;
- import android.database.sqlite.SQLiteOpenHelper;
- public class DBOpenHelper extends SQLiteOpenHelper
- {
- private static final String DB_NAME = "student.db";
- private static final int VERSION = 1;
- private static final String CREATE_TABLE = "create table student (stu_id integer primary key autoincrement,name text,gender text,age integer,telphone text);";
- public DBOpenHelper(Context context) {
- super(context, DB_NAME, null, VERSION);
- }
- @Override
- public void onCreate(SQLiteDatabase db) {
- db.execSQL(CREATE_TABLE);
- }
- @Override
- public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
- db.execSQL("DROP TABLE IF EXISTS student");
- onCreate(db);
- }
- }
至此数据库的帮助类已经基本完成,接下来要用SQLiteDatabase类中的方法来对学生信息进行管理了;
|
评论暂时关闭