1 public class PersonService {
2 private DBOpenHelper dbOpenHelper;
3
4 public PersonService(Context context) {
5 this.dbOpenHelper = new DBOpenHelper(context);
6 }
7
8 public void payment(){
9 SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
10 db.beginTransaction();//开启事务
11 try{
12 db.execSQL("update person set amount=amount-10 where personid=1");
13 db.execSQL("update person set amount=amount+10 where personid=2");
14 db.setTransactionSuccessful();//设置事务的标志为True
15 }finally{
16 db.endTransaction();//结束事务,有两种情况:commit,rollback,
17 //事务的提交或回滚是由事务的标志决定的,如果事务的标志为True,事务就会提交,否侧回滚,默认情况下事务的标志为False
18 }
19 }
20 /**
21 * 添加记录
22 * @param person
23 */
24 public void add(Person person){
25 SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
26 db.execSQL("insert into person(name, phone, amount) values(?,?,?)",
27 new Object[]{person.getName(), person.getPhone(), person.getAmount()});
28 }
29 /**
30 * 删除记录
31 * @param id 记录ID
32 */
33 public void delete(Integer id){
34 SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
35 db.execSQL("delete from person where personid=?", new Object[]{id});
36 }
37 /**
38 * 更新记录
39 * @param person
40 */
41 public void update(Person person){
42 SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
43 db.execSQL("update person set name=?,phone=?,amount=? where personid=?",
44 new Object[]{person.getName(), person.getPhone(), person.getAmount(), person.getId()});
45 }
46 /**
47 * 查询记录
48 * @param id 记录ID
49 * @return
50 */
51 public Person find(Integer id){
52 SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
53 Cursor cursor = db.rawQuery("select * from person where personid=?", new String[]{id.toString()});
54 if(cursor.moveToFirst()){
55 int personid = cursor.getInt(cursor.getColumnIndex("personid"));
56 int amount = cursor.getInt(cursor.getColumnIndex("amount"));
57 String name = cursor.getString(cursor.getColumnIndex("name"));
58 String phone = cursor.getString(cursor.getColumnIndex("phone"));
59 return new Person(personid, name, phone, amount);
60 }
61 cursor.close();
62 return null;
63 }
64 /**
65 * 分页获取记录
66 * @param offset 跳过前面多少条记录
67 * @param maxResult 每页获取多少条记录
68 * @return
69 */
70 public List<Person> getScrollData(int offset, int maxResult){
71 List<Person> persons = new ArrayList<Person>();
72 SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
73 Cursor cursor = db.rawQuery("select * from person order by personid asc limit ?,?",
74 new String[]{String.valueOf(offset), String.valueOf(maxResult)});
75 while(cursor.moveToNext()){
76 int personid = cursor.getInt(cursor.getColumnIndex("personid"));
77 int amount = cursor.getInt(cursor.getColumnIndex("amount"));
78 String name = cursor.getString(cursor.getColumnIndex("name"));
79 String phone = cursor.getString(cursor.getColumnIndex("phone"));
80 persons.add(new Person(personid, name, phone, amount));
81 }
82 cursor.close();
83 return persons;
84 }
85 /**
86 * 分页获取记录
87 * @param offset 跳过前面多少条记录
88 * @param maxResult 每页获取多少条记录
89 * @return
90 */
91 public Cursor getCursorScrollData(int offset, int maxResult){
92 SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
93 Cursor cursor = db.rawQuery("select personid as _id,name,phone,amount from person order by personid asc limit ?,?",
94 new String[]{String.valueOf(offset), String.valueOf(maxResult)});
95 return cursor;
96 }
97
98 /**
99 * 获取记录总数
100 * @return
101 */
102 public long getCount(){
103 SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
104 Cursor cursor = db.rawQuery("select count(*) from person", null);
105 cursor.moveToFirst();
106 long result = cursor.getLong(0);
107 cursor.close();
108 return result;
109 }
110 }