寫在前面的話,本文轉載自http://www.eoeandroid.com/thread-81911-1-1.html
package it.service;import java.util.ArrayList;import java.util.List;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.util.Log;import it.bean.Person;/**** 實體操作類* rawQuery 執行sql查詢* execSQL 執行增刪 改的sql* 由SQLiteOpenHelper 的繼承類 MangerDatabase擷取資料庫管理執行個體* 由SQLiteDatabase的對象去擷取這個管理執行個體* 這個對象可以執行rawQuery和execSQL方法*/public class PersonService {private MangerDatabase dbmanger;public PersonService(Context context) {dbmanger=new MangerDatabase(context);}//儲存public void save(Person person){/*** 開啟資料庫 取得資料操作對象* getWritableDatabase()和getReadableDatabase()方法都可以擷取一個用於操作資料庫的SQLiteDatabase執行個體。* 但getWritableDatabase() 方法以讀寫方式開啟資料庫,一旦資料庫的磁碟空間滿了,資料庫就只能讀而不能寫,* 倘若使用的是getWritableDatabase() 方法就會出錯。* getReadableDatabase()方法先以讀寫方式開啟資料庫,如果資料庫的磁碟空間滿了,就會開啟失敗* 當開啟失敗後會繼續嘗試以唯讀方式開啟資料庫。* SQLiteDatabase sqlite資料庫的管理類*/SQLiteDatabase database= dbmanger.getWritableDatabase();database.execSQL("insert into person(name,age) values(?,?)",new Object[]{person.getName(),person.getAge()});}//更新public void update(Person person){SQLiteDatabase database= dbmanger.getWritableDatabase();//execSQL是執行sql語句database.execSQL("update person set name=?,age=? where personid=?",new Object[]{person.getName(),person.getAge(),person.getPersonId()});}//根據id執行查詢資料public Person findbyid(Integer id){SQLiteDatabase database= dbmanger.getWritableDatabase();//Cursor是遊標類 遊標在資料庫中其實就是一個資料集Cursor cursor = database.rawQuery("select * from person where personid=?", new String[]{String.valueOf(id)});if(cursor.moveToNext()){Log.i("xxx", "xxx"+String.valueOf(cursor.getInt(3)));Person person=new Person(cursor.getInt(0),cursor.getString(1),cursor.getShort(2));return person;}return null;}//刪除public void delete(Integer... ids){if(ids.length>0){StringBuilder sb = new StringBuilder();for(Integer id : ids){sb.append('?').append(',');}//刪除最後一個字元sb.deleteCharAt(sb.length()-1);SQLiteDatabase database= dbmanger.getWritableDatabase();//execSQL是執行sql語句database.execSQL("delete from person where personid in("+sb+")",(Object[])ids);}}//分頁查詢 一public List getdatePerson(int startResult,int maxResult){List persons=new ArrayList();SQLiteDatabase database= dbmanger.getWritableDatabase();//Cursor是遊標類 遊標在資料庫中其實就是一個資料集//rawQuery(String sql,String[]s) 參數一 是一個sql語句 參數二是參數一sql語句中條件的預留位置所存的具體值,這些值是一個字元string數組Cursor cursor = database.rawQuery("select * from person limit ?,?",new String[]{String.valueOf(startResult), String.valueOf(maxResult)});while(cursor.moveToNext()){persons.add(new Person(cursor.getInt(0), cursor.getString(1),cursor.getShort(2))); }return persons;}