基於Android SQLiteOpenHelper CRUD 的使用

來源:互聯網
上載者:User

複製代碼 代碼如下:public class DBOpenHelper extends SQLiteOpenHelper {
// 類沒有執行個體化,不能用作父類構造器的參數,必須聲明為靜態
public DBOpenHelper(Context context, int version) {
super(context, "SQLite.db", null, version);
// 第三個參數CursorFactory指定在執行查詢時獲得一個遊標執行個體的工廠類,設定為null代表使用系統預設的遊標工廠;
}
@Override
public void onCreate(SQLiteDatabase db) {// 資料庫第一次被建立的時候被調用,最開始建立資料庫時賦的版本號碼值是0
// SQLiteDatabase用於產生資料庫表;資料庫存放路徑:<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) {// 版本號碼升級的時候進行調用;如果資料庫不存在就不調用
db.execSQL("alter table person add phone varchar(12) null");// 往表中增加一列
}
}
DBOpenHelper dbOpenHelper = new DBOpenHelper(getContext(), 1);
dbOpenHelper.getWritableDatabase();// 會create資料庫表or/open資料庫表

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();有緩衝的功能,同一個Helper用此方法得到的對象為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();
// 如果資料庫磁碟空間未滿,得到的執行個體即為getWritableDatabase()得到的對象;因為此方法會調用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;
}
/*
* 擷取分頁資料
*/
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 專門用於儲存欄位的值
values.put("name", person.getName());
values.put("phone", person.getPhone());
db.insert("person", null, values);// 第三個參數為欄位值,第二個參數為空白值欄位,如果第三個參數為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;
}
/*
* 擷取分頁資料
*/
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;
}
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.