android数据库升级(一)

来源:互联网 发布:淘宝品牌授权资质 编辑:程序博客网 时间:2024/04/28 16:25

一、定义一个adress的实体类

package com.databasetest;

public class Address {
public int id;
public String address;
public String province;
@Override
public String toString() {
return "Address [id=" + id + ", address=" + address + ", province="
+ province + "]";
}

}

二、定义helper

package com.databasetest;

import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class AddressDBHelper extends SQLiteOpenHelper{
    
    private static SQLiteOpenHelper mInstance;
    
    private final static String name = "AddressDBHelper.db";
    
    public static SQLiteOpenHelper getInstance(Context context){
        if(mInstance == null){

//3与1版本不同会调用升级方法
            mInstance = new AddressDBHelper(context, name, null, 3);
        }
        return mInstance;
    }
    
    
    public AddressDBHelper(Context context, String name, CursorFactory factory,
            int version) {

//通过修改version值来通知调用升级程序
        super(context, name, factory, 1);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
         db.execSQL("create table address(_id integer primary key autoincrement,address text)");
        
    }
//如果构造方法的version值与已经存在的不同则条用此方法
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.beginTransaction();
      
      
                try {
                    db.execSQL("Alter Table address ADD COLUMN province text");  
                    // Create tables   
                    db.setTransactionSuccessful();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            db.endTransaction();
        

    }

}

三、写一个dao类进行增删改查

import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class AddressDao {
    private SQLiteOpenHelper mOpenHelper;

    public AddressDao(Context context) {
        super();
        this.mOpenHelper = AddressDBHelper.getInstance(context);
    }
    
    public void add(String address){
        SQLiteDatabase db = mOpenHelper.getWritableDatabase();
        db.beginTransaction();
        try {
            if(db.isOpen()){
                ContentValues values = new ContentValues();
                values.put("address", address);
                db.insert("address", "", values);
                db.setTransactionSuccessful();
            }
        } catch (Exception e) {
            
        }finally{
            db.endTransaction();
    
        }
        db.close();
    }
    
    public void deleteById(int id){
        SQLiteDatabase db = mOpenHelper.getWritableDatabase();
        db.beginTransaction();
        try {
            if(db.isOpen()){
                db.delete("address", " _id = ? ", new String[]{id + ""});
                db.setTransactionSuccessful();
            }
        }catch (Exception e) {
        
        }finally{
            db.endTransaction();
    
        }
        db.close();
    }
    
    public Address findAddressById(int id){
        SQLiteDatabase db = mOpenHelper.getReadableDatabase();
        Address address = null;
        try {
            if(db.isOpen()){
                Cursor c = db.query("address", new String[]{"_id","address"},
                        "_id=?",new String[]{id+""},
                        null, null, null);
                if(c.moveToNext()){
                    address = new Address();
                    address.id = c.getInt(c.getColumnIndex("_id"));
                    address.address = c.getString(c.getColumnIndex("address"));
                }
            }
        } catch (Exception e) {
            
        }
        db.close();
        return address;    
    }
    
    public List<Address> findAll(){
        SQLiteDatabase db = mOpenHelper.getReadableDatabase();
        List<Address> ads = new ArrayList<Address>();
        Address address = null;
        if(db.isOpen()){
            Cursor c = db.query("address", new String[]{"_id","address"},
                    null, null, null, null, null, null);
            while(c.moveToNext()){
                address = new Address();
                address.id = c.getInt(c.getColumnIndex("_id"));
                address.address = c.getString(c.getColumnIndex("address"));
                ads.add(address);
            }
        }
        db.close();
        return ads;    
    }
}


0 0
原创粉丝点击