您的位置:首页 > 移动开发 > Android开发

Android基础之Sqlite数据库

2016-03-10 16:39 561 查看
在Android平台上,集成了一个嵌入式关系型数据库—SQLite,它是一种非常轻量的数据库管理系统,SQLite3支持 NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,SQLite通过文件来保存数据库,一个文件就是一个数据库。

- 常用类介绍

- SQLiteOpenHelper

数据库辅助抽象类,通过实现它的子类可以创建数据库以及实现版本更新,通过getWriteableDatabase获得getReadableDatabase获取数据库访问类

-SQLiteDatabase:数据库访问类

通过数据库访问类,可以实现对数据库的增删改查等操作

Android创建Sqlite数据库

SQLite数据库是在第一次调用的时候创建数据库的

创建数据库的步骤:

1.定义一个db辅助类,继承SQLiteOpenHelper抽象类,通过构造方法设置数据库名及版本信息。

2. 重写onCreate()方法,该方法只会在数据库第一次创建的时候调用,在此方法中适合做数据库初始化操作,比如创建数据表等。

3. 重写onUpGrade() , 当数据库版本更新时调用,适合做表结构的修改或者添加删除表。

* 参考代码:

/**
* 数据库辅助类的构造方法,当数据库存在,则直接返回,没有则创建数据库,并调用onCreate()初始化数据库
* @param context:上下文
* @param name :数据库名  以文件的形式保存
* @param factory :游标工厂,一般是由系统来提供
* @param version :版本   最小为1的整数
*/
public DBHelper(Context context) {
super(context, NAME, null, VERSION);
}
/**
* 当初始化数据库的时候调用,在这里进行数据表的创建,相应初始数据的添加
*/
@Override
public void onCreate(SQLiteDatabase db) {
//创建book表
String sqlStr="create table t_book(_id integer primary key autoincrement ,name text ,price integer)";
//执行sql语句
db.execSQL(sqlStr);
}
/**
* 当版本要更新的时候调用,一般实现数据表结构的修改,
* 添加删除表,当
4000
newVersion 大于oldVersion时调用
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists t_book ");
onCreate(db);
System.out.println("onUpgrade");
}


SQLite数据库增删改查

1 添加记录

public int save(ContentValues values){
//取得SqliteDatabase 对象来对数据库进行增删改查
SQLiteDatabase db=dbHelper.getWritableDatabase();
/**
* 1、table:表名
* 2、nullColumnHack:当values为null时 ,默认填充要插入的字段
* 3、ContentValues:内容值,好比HashMap
*/
Long row=db.insert(TABLE, null, values);
// insert into  table (name,price) values("鬼吹灯1","35")
//假如 ContentValues为空 :insert into table(null)values (null)
//关闭数据库
db.close();
return row.intValue();
}


2 删除记录

//删除一条记录
public int delete(int id){
SQLiteDatabase db=dbHelper.getWritableDatabase();
/**
* table:表名
* whereClause:条件
* whereArgs:条件占位符  id=?        new String[]{id}
*/
int num=db.delete(TABLE, " id=? ", new String[]{String.valueOf(id)});
db.close();
return num;
}


3 查询

//查找所有记录
public ArrayList<HashMap<String, Object>> find(){
SQLiteDatabase db=dbHelper.getReadableDatabase();
ArrayList<HashMap<String,Object>>data=new ArrayList<HashMap<String,Object>>();
Cursor cursor=db.query(TABLE, null, null, null, null, null, PRICE+" desc");
while(cursor.moveToNext()){
HashMap<String, Object> map=new HashMap<String, Object>();
map.put(ID, cursor.getInt(cursor.getColumnIndex(ID)));
map.put(NAME, cursor.getString(cursor.getColumnIndex(NAME)));
map.put(PRICE, cursor.getInt(cursor.getColumnIndex(PRICE)));
data.add(map);
}
db.close();
return data;
}
/**
* 查寻数据库中的数据,返回的值为Cursor类型
*/
public Cursor findByCursor(){
SQLiteDatabase db=dbHelper.getReadableDatabase();
Cursor cursor=db.query(TABLE, null, null, null, null, null,null);
//用Cursor返回 ,不能关闭数据库
return cursor;
}


4 更新记录

/**
* 记录更新
* @param values
* @return
*/
public int update(ContentValues values){
//更新某条记录 传一个Id过来
String id=values.getAsString(ID);
SQLiteDatabase db=dbHelper.getWritableDatabase();
int num=db.update(TABLE, values, " id=?", new String[]{id});
db.close();
//关闭数据库
return num;
}


SQLite事务处理

/**
* 一条记录更新
* @param values
* @return
*/
public int update(ContentValues values){
//更新某条记录 传一个Id过来
String id=values.getAsString(ID);
SQLiteDatabase db=dbHelper.getWritableDatabase();
int num=db.update(TABLE, values, " id=?", new String[]{id});
db.close();
//关闭数据库
return num;
}


写博客纯属个人爱好,如果又不对的地方,欢迎吐槽。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: