基于Android SQLiteOpenHelper && CRUD 的使用
public class DBOpenHelper extends SQLiteOpenHelper {
// 類(lèi)沒(méi)有實(shí)例化,不能用作父類(lèi)構(gòu)造器的參數(shù),必須聲明為靜態(tài)
public DBOpenHelper(Context context, int version) {
super(context, "SQLite.db", null, version);
// 第三個(gè)參數(shù)CursorFactory指定在執(zhí)行查詢時(shí)獲得一個(gè)游標(biāo)實(shí)例的工廠類(lèi),設(shè)置為null代表使用系統(tǒng)默認(rèn)的游標(biāo)工廠;
}
@Override
public void onCreate(SQLiteDatabase db) {// 數(shù)據(jù)庫(kù)第一次被創(chuàng)建的時(shí)候被調(diào)用,最開(kāi)始創(chuàng)建數(shù)據(jù)庫(kù)時(shí)賦的版本號(hào)值是0
// SQLiteDatabase用于生成數(shù)據(jù)庫(kù)表;數(shù)據(jù)庫(kù)存放路徑:<package name>/databases/
db.execSQL("create table person(personid integer primary key autoincrement, name varchar(20))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// 版本號(hào)升級(jí)的時(shí)候進(jìn)行調(diào)用;如果數(shù)據(jù)庫(kù)不存在就不調(diào)用
db.execSQL("alter table person add phone varchar(12) null");// 往表中增加一列
}
}
DBOpenHelper dbOpenHelper = new DBOpenHelper(getContext(), 1);
dbOpenHelper.getWritableDatabase();// 會(huì)create數(shù)據(jù)庫(kù)表or/open數(shù)據(jù)庫(kù)表
public class PersonService {
private DBOpenHelper dbOpenHelper;
public PersonService(Context context) {
super();
this.dbOpenHelper = new DBOpenHelper(context, 2);
}
public void save(Person person) {
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
// SQLiteDatabase db2 = dbOpenHelper.getWritableDatabase();有緩存的功能,同一個(gè)Helper用此方法得到的對(duì)象為db;
db.execSQL("insert into person(name,phone) values(?,?)", new Object[] {person.getName(), person.getPhone() });
}
public void delete(Integer id) {
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
db.execSQL("delete from person where personid=?", new Object[] { id });
}
public void update(Person person) {
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
db.execSQL("update person set name=?,phone=? where personid=?",new Object[] { person.getName(), person.getPhone(),person.getId() });
}
public Person find(Integer id) {
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
// 如果數(shù)據(jù)庫(kù)磁盤(pán)空間未滿,得到的實(shí)例即為getWritableDatabase()得到的對(duì)象;因?yàn)榇朔椒〞?huì)調(diào)用getWritableDatabase方法;
Cursor cursor = db.rawQuery("select * from person where personid=?",new String[] { id.toString() });
if (cursor.moveToFirst()) {
int personid = cursor.getInt(cursor.getColumnIndex("personid"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String phone = cursor.getString(cursor.getColumnIndex("phone"));
return new Person(personid, name, phone);
}
cursor.close();
return null;
}
/*
* 獲取分頁(yè)數(shù)據(jù)
*/
public List getScollData(int offest, int maxResult) {
List persons = new ArrayList();
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
Cursor cursor = db.rawQuery("select * from person order by personid asc limit ?,?",new String[] { String.valueOf(offest),String.valueOf(maxResult) });
while (cursor.moveToNext()) {
int personid = cursor.getInt(cursor.getColumnIndex("personid"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String phone = cursor.getString(cursor.getColumnIndex("phone"));
persons.add(new Person(personid, name, phone));
}
cursor.close();
return persons;
}
public long getCount() {
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
Cursor cursor = db.rawQuery("select count(*) from person", null);
cursor.moveToFirst();
long result = cursor.getLong(0);
return result;
}
}
public class OtherPersonService {
private DBOpenHelper dbOpenHelper;
public OtherPersonService(Context context) {
super();
this.dbOpenHelper = new DBOpenHelper(context, 2);
}
public void save(Person person) {
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
ContentValues values = new ContentValues();// ContentValues 專(zhuān)門(mén)用于保存字段的值
values.put("name", person.getName());
values.put("phone", person.getPhone());
db.insert("person", null, values);// 第三個(gè)參數(shù)為字段值,第二個(gè)參數(shù)為空值字段,如果第三個(gè)參數(shù)為null
}
public void delete(Integer id) {
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
db.delete("person", "personid=?", new String[] { id.toString() });
}
public void update(Person person) {
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", person.getName());
values.put("phone", person.getPhone());
db.update("person", values, "personid=?", new String[] { person.getId().toString() });
}
public Person find(Integer id) {
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
Cursor cursor = db.query("person", null, "personid=?",new String[] { id.toString() }, null, null, null);
if (cursor.moveToFirst()) {
int personid = cursor.getInt(cursor.getColumnIndex("personid"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String phone = cursor.getString(cursor.getColumnIndex("phone"));
return new Person(personid, name, phone);
}
cursor.close();
return null;
}
/*
* 獲取分頁(yè)數(shù)據(jù)
*/
public List getScollData(int offest, int maxResult) {
List persons = new ArrayList();
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
Cursor cursor = db.query("person", null, null, null, null, null,"personid asc", offest + "," + maxResult);
//db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy, limit);
while (cursor.moveToNext()) {
int personid = cursor.getInt(cursor.getColumnIndex("personid"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String phone = cursor.getString(cursor.getColumnIndex("phone"));
persons.add(new Person(personid, name, phone));
}
cursor.close();
return persons;
}
public long getCount() {
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
Cursor cursor = db.query("person", new String[] { "count(*)" }, null, null, null, null, null);
//db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy);
cursor.moveToFirst();
long result = cursor.getLong(0);
return result;
}
}
相關(guān)文章
android檢測(cè)SD卡讀寫(xiě)權(quán)限方法
今天小編就為大家分享一篇android檢測(cè)SD卡讀寫(xiě)權(quán)限方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
靈活使用Android中ActionBar和ViewPager切換頁(yè)面
這篇文章主要介紹了如何靈活使用Android中ActionBar和ViewPager切換頁(yè)面,感興趣的小伙伴們可以參考一下2015-12-12
Android添加圖片到ListView或者RecyclerView顯示
這篇文章主要介紹了Android添加圖片到ListView或者RecyclerView顯示的相關(guān)資料,需要的朋友可以參考下2016-08-08
Android實(shí)現(xiàn)新增及編輯聯(lián)系人的方法
這篇文章主要介紹了Android實(shí)現(xiàn)新增及編輯聯(lián)系人的方法,是Android應(yīng)用開(kāi)發(fā)常見(jiàn)的功能,需要的朋友可以參考下2014-07-07
Android中ImageView使用網(wǎng)絡(luò)圖片資源的方法
這篇文章主要介紹了Android中ImageView使用網(wǎng)絡(luò)圖片資源的方法,較為詳細(xì)的分析了ImageView調(diào)用網(wǎng)絡(luò)圖片的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10
Android 7.0 SEAndroid app權(quán)限配置方法
今天小編就為大家分享一篇Android 7.0 SEAndroid app權(quán)限配置方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
Android App中實(shí)現(xiàn)相冊(cè)瀑布流展示的實(shí)例分享
這篇文章主要介紹了Android App中實(shí)現(xiàn)相冊(cè)瀑布流展示的實(shí)例分享,例子中利用到了緩存LruCache類(lèi)的相關(guān)算法來(lái)解決大量加載問(wèn)題,需要的朋友可以參考下2016-04-04
Android為T(mén)iny4412設(shè)備驅(qū)動(dòng)在proc目錄下添加一個(gè)可讀版本信息的文件
今天小編就為大家分享一篇關(guān)于Android為T(mén)iny4412設(shè)備驅(qū)動(dòng)在proc目錄下添加一個(gè)可讀版本信息的文件,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12
Android HelloChart開(kāi)源庫(kù)圖表之折線圖的實(shí)例代碼
這篇文章主要介紹了Android HelloChart開(kāi)源庫(kù)圖表之折線圖的實(shí)例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,一起跟隨小編過(guò)來(lái)看看吧2018-05-05

