創建兩個包,db包用來創建數據庫,dao包對數據庫的增刪改查的操作。
舉個對手機黑名單數據庫(BlackDB)增刪改查的例子:
1、在db包中創該建數據庫:
<span style="font-size:14px;">public class BlackBD extends SQLiteOpenHelper {
public BlackBD(Context context) {
super(context, "black.db", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table blacktb(_id integer primary key autoincrement,phone text,mode integer )");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//我這裏更新版本是清除數據
db.execSQL("drop table blacktb");
this.onCreate(db);
}
}</span>
2、在dao包中創建對該數據庫對應的操作類:
package com.lmk.dao;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.lmk.db.BlackBD;
import com.lmk.domain.BlackTableBean;
import com.lmk.utils.BlackTable;
public class BlackDao {
private BlackBD blackDB;
public BlackDao(Context context) {
blackDB = new BlackBD(context);
}
// *******************************分頁以下***************************
/**
*
* @return 得到總數據(總條數)
*/
private int getTatalRows() {
int tatalRows = 0;
SQLiteDatabase db = blackDB.getReadableDatabase();
Cursor cursor = db.rawQuery("select count(1) from "
+ BlackTable.BLACKTABLENAME, null);
while (cursor.moveToNext()) {
tatalRows = cursor.getInt(0);
}
db.close();
return tatalRows;
}
/**
*
* @param prePages
* 指定的每頁顯示的條數
* @return 總頁數
*/
public int getTatalPages(int prePages) {
int tatalPages = 0;
int tatalRows = getTatalRows();
tatalPages = (int) Math.ceil((tatalRows * 1.0) / prePages);
return tatalPages;
}
/**
*
* @param currentPage
* 當前頁碼(要顯示的頁碼)
* @param perPage
* 每頁顯示的條數
* @return 指定頁的數據
*/
public List<BlackTableBean> getPageDatas(int currentPage, int perPage) {
List<BlackTableBean> datas = new ArrayList<BlackTableBean>();
SQLiteDatabase db = blackDB.getReadableDatabase();
/**
* 數據庫sql:開始顯示的第一條位置,顯示的條數
*/
Cursor cursor = db.rawQuery("select " + BlackTable.PHONE + ","
+ BlackTable.MODE + " from " + BlackTable.BLACKTABLENAME
+ " limit ?,?", new String[] {
((currentPage - 1) * perPage) + "", perPage + "" });
while (cursor.moveToNext()) {
BlackTableBean bean = new BlackTableBean();
bean.setPhone(cursor.getString(0));
bean.setMode(cursor.getInt(1));
datas.add(bean);
}
db.close();
return datas;
}
// *******************************分頁以上***************************
// 獲取所有的datas,未分頁
public List<BlackTableBean> getAll() {
List<BlackTableBean> datas = new ArrayList<BlackTableBean>();
SQLiteDatabase database = blackDB.getReadableDatabase();
Cursor cursor = database.rawQuery("select " + BlackTable.PHONE + ","
+ BlackTable.MODE + " from " + BlackTable.BLACKTABLENAME
+ " order by _id desc ", null);
while (cursor.moveToNext()) {
BlackTableBean bean = new BlackTableBean();
bean.setPhone(cursor.getString(0));
bean.setMode(cursor.getInt(1));
datas.add(bean);
}
return datas;
}
public void delete(String phone) {
// 獲取數據庫
SQLiteDatabase db = blackDB.getWritableDatabase();
db.delete(BlackTable.BLACKTABLENAME, BlackTable.PHONE + "=?",
new String[] { phone });
db.close();
}
public void add(BlackTableBean bean) {
add(bean.getPhone(), bean.getMode());
}
public void add(String phone, int mode) {
// 先刪除重複的
delete(phone);
// 獲取數據庫
SQLiteDatabase db = blackDB.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(BlackTable.PHONE, phone);
values.put(BlackTable.MODE, mode);
db.insert(BlackTable.BLACKTABLENAME, null, values);
db.close();
}
}