Android中自带了一种数据库就是sqlite数据库,这种数据库方便开发者将一些比较小型的但是会经常使用或者相对来说比较重要的数据存储在sqlite中,这样十分方便,用户操作起来也会很流畅.所有日常开发项目中sqlite数据库用的地方很多.比如记住交易清单等等操作都需要用到sqlite的数据库.
下面就来介绍一些sqlite数据库的使用.首先大家知道要想使用数据库必须要有一个数据库才可以使用,所以我们第一步就是创建数据库,然后我们的数据都是存储在表中的,所以我们需要创建表,最后就是对表就行增删改查的操作了.
一.创建sqlite数据库和表格
public class DBhelper extends SQLiteOpenHelper {
public final static String DATABASENAME = "datademo.db";
public final static int DATAVERSION = 1;
/**用来创建数据库的方法*/
public DBhelper(Context context) {
super(context, DATABASENAME, null, DATAVERSION);
}
/**用来创建表的方法*/
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table database (_id integer primary key autocrement,name varchar(20))");
}
/**当版本升级的时候用来执行的方法*/
@Override
public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
//如果存在数据库在版本升级的时候删除在从新创建
db.execSQL("drop table if exists database");
onCreate(db);
}
}
二.对数据库的表进行CRUD操作
首先我们需要明确一点,我们进行CRUD(增删改查)的操作目的是方便我们项目中如果用到这些操作随时进行调用,所以我们需要将这些方法暴露给外界从而让他们进行调用,与此同时我们还需要注意的一点就是类和类直接的耦合度尽量的低,所以我的习惯是将这些方法写在一个DBManager类中统一管理.
package com.example.sqlitedemo;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
* @Title: DBManager.java
* @Package com.example.sqlitedemo
* @Description: TODO(添加描述)
* @author RollingStone
* @date 2015年1月5日 上午12:33:41
* @version V1.0
*/
public class DBManager {
private static DBManager mDBManager;
private Context context;
private DBhelper dBhelper;
/**获得DBManager的实例之前需要把数据库和表初始化了*/
public DBManager(Context context) {
dBhelper = new DBhelper(context);
}
/**获取到实例*/
public static DBManager getInstance(Context context){
if(mDBManager == null){
mDBManager = new DBManager(context);
}
return mDBManager;
}
/**对表进行插入的操作*/
public void addData(){
SQLiteDatabase db = dBhelper.getWritableDatabase();
//实例化内容值
ContentValues values = new ContentValues();
//写入你想添加的信息
values.put("info1", "info1values");
values.put("info2", "info2values");
values.put("info3", "info3values");
values.put("info4", "info4values");
//这里table的名字一定要和创建数据库的table的名字一样
db.insert(dBhelper.DATABASENAME, null, values);
//同样可以用sql语句来实现方法
db.execSQL("这里写插入数据的sql语句就可以了");
}
/**对表进行删除的操作*/
public void deleteData(){
SQLiteDatabase db = dBhelper.getWritableDatabase();
//删除的条件
String whereClause = "_id = ?";
//删除的条件的参数
String[] whereArgs = {String.valueOf(2)};
db.delete(dBhelper.DATABASENAME, whereClause, whereArgs);
//同样可以用sql语句来实现
db.execSQL("这里写删除数据的sql语句就可以了");
}
/**对表进行更新的操作*/
public void updateData(){
SQLiteDatabase db = dBhelper.getWritableDatabase();
//实例化内容值
ContentValues values = new ContentValues();
values.put("info1", "info1values");
values.put("info2", "info2values");
values.put("info3", "info3values");
values.put("info4", "info4values");
String whereClause = "info1";
String[] whereArgs = {String.valueOf("info1values")};
db.update(dBhelper.DATABASENAME, values, whereClause, whereArgs);
}
public void queryData(){
SQLiteDatabase db = dBhelper.getReadableDatabase();
//columns 列名称数组
String[] columns = {};
//条件语句,相当于where
String selection = "";
//条件语句,参数数组
String[] selectionArgs = {};
//groupBy 分组列
//having 分组条件
//orderBy 排序列
//cursor 结果集相当于ResultSet
Cursor cursor = db.query(dBhelper.DATABASENAME, columns, selection, selectionArgs, null, null, null);
}
}
当然我们为了方便可以为每一个方法添加一些参数,这样会更加方便调用.
再查询方法中查询的结果是Cursor,他有很多种方法.
方法名称 | 方法描述 |
getCount() | 获得总的数据项数 |
isFirst() | 判断是否第一条记录 |
isLast() | 判断是否最后一条记录 |
moveToFirst() | 移动到第一条记录 |
moveToLast() | 移动到最后一条记录 |
move(int offset) | 移动到指定记录 |
moveToNext() | 移动到下一条记录 |
moveToPrevious() | 移动到上一条记录 |
getColumnIndexOrThrow(String columnName) | 根据列名称获得列索引 |
getInt(int columnIndex) | 获得指定列索引的int类型值 |
getString(int columnIndex) | 获得指定列缩影的String类型值 |
最后,因为sqlite数据库我们写好了方法,但是测试的结果我们却不知道对不对,所以我推荐用adb的方式来查看结果,具体的代码可以百度。希望大家有所学习和了解.