安卓中SQLite数据库操作学习

Android中内置的是SQLite小型数据库,类似access一样是以文件方式存在的,操作起来十分方便。android操作SQLite需要继承自SQLiteOpenHelper 来得到连接。实现了2个方法:onCreate和onUpgrade。第一次获得对数据库的读或写操作的时候调用onCreate,所以这里面写创建数据表的语句;在数据库版本变化的时候会调用onUpgrade,所以如果表结构变化了就在这里修改。

        下面的代码继承了SQLiteOpenHelper ,并且自己写了几个增删改查方法,将对数据库操作的DAO模块继承到一起,以后操作数据库用这一个java文件基本就OK啦。

[java]  view plain  copy
  1. package cn.itcast.service;  
  2.    
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.    
  6. import android.content.Context;  
  7. import android.database.Cursor;  
  8. import android.database.sqlite.SQLiteDatabase;  
  9. import android.database.sqlite.SQLiteOpenHelper;  
  10.    
  11. public class DBOpenHelper extends SQLiteOpenHelper {  
  12.     private static final String DATABASENAME = "test.db"//数据库名称  
  13.     private static final int DATABASEVERSION = 1;//数据库版本,大于0  
  14.    
  15.     public DBOpenHelper(Context context) {  
  16.         super(context, DATABASENAME, null, DATABASEVERSION);  
  17.     }  
  18.    
  19.     @Override  
  20.     public void onCreate(SQLiteDatabase db) {  
  21.         db.execSQL("CREATE TABLE person (personid integer primary key autoincrement, name varchar(20), amount integer)");//执行有更改的sql语句  
  22.     }  
  23.    
  24.     @Override  
  25.     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
  26.         db.execSQL("DROP TABLE IF EXISTS person");  
  27.         onCreate(db);  
  28.     }  
  29.    
  30.     public void payment(){  
  31.         SQLiteDatabase db = getWritableDatabase();  
  32.         db.beginTransaction();//事启事务  
  33.         try{  
  34.             db.execSQL("update person set amount=amount-10 where personid=?"new Object[]{1});  
  35.             db.execSQL("update person set amount=amount+10 where personid=?"new Object[]{2});  
  36.             db.setTransactionSuccessful();//设置事务标志为成功,当结束事务时就会提交事务  
  37.         }finally{  
  38.             db.endTransaction();  
  39.         }  
  40.     }  
  41.    
  42.     public void save(Person person){  
  43.         //如果要对数据进行更改,就调用此方法得到用于操作数据库的实例,该方法以读和写方式打开数据库  
  44.         SQLiteDatabase db = getWritableDatabase();  
  45.         db.execSQL("insert into person (name,amount) values(?,?)",  
  46.                 new Object[]{person.getName(),person.getAmount()});  
  47.     }  
  48.        
  49.     public void update(Person person){  
  50.         SQLiteDatabase db = getWritableDatabase();  
  51.         db.execSQL("update person set name=? where personid=?",   
  52.                 new Object[]{person.getName(),person.getId()});  
  53.     }  
  54.        
  55.     public void delete(Integer id){  
  56.         SQLiteDatabase db = getWritableDatabase();  
  57.         db.execSQL("delete from person where personid=?"new Object[]{id.toString()});  
  58.     }  
  59.        
  60.     public Person find(Integer id){  
  61.         //如果只对数据进行读取,建议使用此方法  
  62.         SQLiteDatabase db = getReadableDatabase();  
  63.         Cursor cursor = db.rawQuery("select * from person where personid=?"new String[]{id.toString()});//得到游标  
  64.         if(cursor.moveToFirst()){  
  65.             int personid = cursor.getInt(cursor.getColumnIndex("personid"));  
  66.             String name = cursor.getString(cursor.getColumnIndex("name"));  
  67.             int amount = cursor.getInt(cursor.getColumnIndex("amount"));  
  68.             Person person = new Person(personid, name);  
  69.             person.setAmount(amount);  
  70.             return person;  
  71.         }  
  72.         return null;  
  73.     }  
  74.        
  75.     public List<Person> getScrollData(Integer offset, Integer maxResult){  
  76.         List<Person> persons = new ArrayList<Person>();  
  77.         SQLiteDatabase db = getReadableDatabase();  
  78.         Cursor cursor = db.rawQuery("select * from person limit ?,?",  
  79.                 new String[]{offset.toString(), maxResult.toString()});  
  80.         while(cursor.moveToNext()){  
  81.             int personid = cursor.getInt(cursor.getColumnIndex("personid"));  
  82.             String name = cursor.getString(cursor.getColumnIndex("name"));  
  83.             int amount = cursor.getInt(cursor.getColumnIndex("amount"));  
  84.             Person person = new Person(personid, name);  
  85.             person.setAmount(amount);  
  86.             persons.add(person);  
  87.         }  
  88.         cursor.close();  
  89.         return persons;  
  90.     }  
  91.        
  92.     public Cursor getCursorScrollData(Integer offset, Integer maxResult){  
  93.         SQLiteDatabase db = getReadableDatabase();  
  94.         return db.rawQuery("select personid as _id, name, amount from person limit ?,?",  
  95.                 new String[]{offset.toString(), maxResult.toString()});  
  96.     }  
  97.        
  98.     public long getCount() {  
  99.         SQLiteDatabase db = getReadableDatabase();  
  100.         Cursor cursor = db.rawQuery("select count(*) from person"null);  
  101.         cursor.moveToFirst();  
  102.         return cursor.getLong(0);  
  103.     }  
  104. }  
涉及到的bean

[java]  view plain  copy
  1. class Person {  
  2.     private Integer id;  
  3.     private String name;  
  4.     private Integer amount;  
  5.        
  6.     public Integer getAmount() {  
  7.         return amount;  
  8.     }  
  9.    
  10.     public void setAmount(Integer amount) {  
  11.         this.amount = amount;  
  12.     }  
  13.    
  14.     public Person(){}  
  15.        
  16.     public Person(Integer id, String name) {  
  17.         this.id = id;  
  18.         this.name = name;  
  19.     }  
  20.     public Integer getId() {  
  21.         return id;  
  22.     }  
  23.     public void setId(Integer id) {  
  24.         this.id = id;  
  25.     }  
  26.     public String getName() {  
  27.         return name;  
  28.     }  
  29.     public void setName(String name) {  
  30.         this.name = name;  
  31.     }  
  32.    
  33.     @Override  
  34.     public String toString() {  
  35.         return "Person [amount=" + amount + ", id=" + id + ", name=" + name  
  36.                 + "]";  
  37.     }  
  38.    
  39.    
  40. }  


摘自:http://www.apkbus.com/blog-58672-39951.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值