SQLite數據庫使用

最近在查看一些關於數據庫的相關文檔博客寫寫總結,以防下次本身又忘啦  哈哈程序員

首先,安卓是有給咱們提供一個幫助類SQLiteOpenHelper,這個類咱們通常須要實現3個方法,哈哈這個編譯工具是會提示咱們的:數據庫

一、構造方法,這個方法通常直接支持父類就好啦,父類提供了兩種構造方法,我採用的是短的那個;數據結構

二、onCreate()方法,這個方法在數據庫建立以後就只會調用一次,通常在這個方法裏邊咱們能夠放咱們的建表語句來建立咱們的數據表。ide

三、onUpgrade()方法,這個方法是在以後數據庫有升級的時候被調用,當咱們傳入的數據庫版本號比當前版本大的時候會調用,通常是咱們須要建立新表,或是原來的表數據結構發生了變化的時候,這些操做咱們會放在這個方法中;工具

public class CommonHospitalDbHelper extends SQLiteOpenHelper {
public CommonHospitalDbHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table common_hospital(id integer primary key,time varchar(50),count integer)");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}
}

而後,安卓還給咱們提供了一個SQLiteDateBase類;經過這個類咱們能夠對數據庫進行一些增刪該查的工做,該類咱們主要掌握
兩個方法execSQL()和rawQuery(),execSQL()方法主要是處理一些數據上有變更的事物,如插入數據insert,刪除數據delete,
修改更新數據update,建表create等,rawQuery()方法通常是處理不須要改變數據的事物,如查詢數據select;那麼如何獲得一個
SQLiteDateBase,SQLiteOpenHelper類給咱們提供了2種方法:
  一、getWritableDatabase()方法能夠獲取一個用於操做數據庫的SQLiteDatabase實例。
getWritableDatabase()方法以讀寫方式打開數據庫,一旦數據庫的磁盤空間滿了,數據庫就只能讀而不能寫,假若使用getWritableDatabase()
打開數據庫就會出錯。
  二、getReadableDataBase()方法能夠獲取一個用於操做數據庫的SQLiteDatabase實例。getReadableDatabase()方法先以讀寫方式打開數據庫,
若是數據庫的磁盤空間滿了,就會打開失敗,當打開失敗後會繼續嘗試以只讀方式打開數據庫。
  Context也給咱們提供了一個方法:
openOrCreateDatabase()該方法能夠打開或建立一個數據庫,若是存在則打開,
不存在就建立,建立成功返回SQLiteDateBase對象,失敗則會拋出一個異常FileNotFoundException();

上述方法事例:

一、
SQLiteDatabase db = SQLiteOpenHelper實現類對象.getWritableDatabase();  


  二、SQLiteDatabase db = SQLiteOpenHelper實現類對象.getReadableDataBase();  

  三、SQLiteDatabase db = context.openOrCreateDatabase("common_hospital",MODE_PRIVATE,null);

通常咱們會創建一個dao類來統一處理數據庫的一些操做:
public class CommonHospitalDao {
private CommonHospitalDbHelper commonHospitalDbHelper;

public CommonHospitalDao(Context context){
this.commonHospitalDbHelper = new CommonHospitalDbHelper(context,"hospital.db",null,1);
}

/**
* 保存數據
*/
public void save(CommonHospital commonHospital){
SQLiteDatabase db = commonHospitalDbHelper.getWritableDatabase();
db.execSQL("insert into common_hospital(id,time,count) values(?,?,?)",new Object[]{
commonHospital.getId(),commonHospital.getTime(),commonHospital.getCount()
});
db.close();
}

/**
* 更新數據
* @param commonHospital
*/
public void update(CommonHospital commonHospital){
SQLiteDatabase db = commonHospitalDbHelper.getWritableDatabase();
db.execSQL("update common_hospital set time=?,count=? where" + " id=?",new Object[]{
commonHospital.getTime(),commonHospital.getCount(),commonHospital.getId()
});
db.close();
}

/**
* 根據醫院id查找醫院
* @param id
* @return
*/
public CommonHospital find(Integer id){
CommonHospital commonHospital = null;
SQLiteDatabase db = commonHospitalDbHelper.getWritableDatabase();
//用遊標Cursor接收從數據庫檢索到的數據
Cursor cursor = db.rawQuery("select * from common_hospital where id=?",new String[]{id.toString()});
if(cursor.moveToFirst()){
commonHospital = new CommonHospital();
commonHospital.setId(cursor.getInt(cursor.getColumnIndex("id")));
commonHospital.setTime(cursor.getString(cursor.getColumnIndex("time")));
commonHospital.setCount(cursor.getInt(cursor.getColumnIndex("count")));
}
db.close();//數據操做完成要記得關閉數據庫
return commonHospital;
}

/**
* 查找全部醫院
* @return
*/
public List<CommonHospital> findAll(){
List<CommonHospital> list = new ArrayList<>();
CommonHospital commonHospital = null;
SQLiteDatabase db = commonHospitalDbHelper.getWritableDatabase();
Cursor cursor = db.rawQuery("select * from common_hospital",null);
while (cursor.moveToNext()){
commonHospital = new CommonHospital();
commonHospital.setId(cursor.getInt(cursor.getColumnIndex("id")));
commonHospital.setTime(cursor.getString(cursor.getColumnIndex("time")));
commonHospital.setCount(cursor.getInt(cursor.getColumnIndex("count")));
list.add(commonHospital);
}
return list;
}
}

而後就是一些在別的地方調用這些方法來進行具體操做啦。

除了前面給你們介紹的execSQL()和rawQuery()方法, SQLiteDatabase還專門提供了對應於添加、刪除、更新、查詢的操做方法:
insert()、delete()、update()和query() 。這些方法對於不太瞭解SQL語法的使用的人來講將是不錯的選擇,對於熟悉SQL語法的程序員
而言,直接使用execSQL()和rawQuery()方法執行SQL語句就能完成數據的添加、刪除、更新、查詢操做。

insert():

該方法返回新插入數據的行號,與主id無關;this

delete():spa

中間的參數表示的是刪除條件;3d

update():對象

第二個是你須要更新的值,第三個和第四個構成須要更改那些數據的條件;blog

最後就是query()方法啦:

該方法咱們看到有好多重構的方法,通常咱們用第3個這種就夠啦;

第一個參數表名,第二個你要查詢哪幾個字段,第三和第四構成查詢條件,第五個表示的是分組列,第六個表示的是分組條件,這兩個通常傳null就行了,第七個是排序列;

相關文章
相關標籤/搜索