Android-SQLiteOpenHelper的使用

創建兩個包,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();

	}

}








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章