SQLite操作

 1 public class DBOpenHelper extends SQLiteOpenHelper {
 2 
 3     public DBOpenHelper(Context context) {
 4         super(context, "itcast.db", null, 2);//<包>/databases/
 5     }
 6 
 7     @Override
 8     public void onCreate(SQLiteDatabase db) {//是在数据库每一次被创建的时候调用的
 9         db.execSQL("CREATE TABLE person(personid integer primary key autoincrement, name varchar(20), phone VARCHAR(12) NULL)");
10     }
11 
12     @Override
13     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //数据库版本改变时调用
14         db.execSQL("ALTER TABLE person ADD amount integer");
15     }
16 
17 }
  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 }

 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。