Android开发:SQLiteOpenHelper学习


SQLiteOpenHelper是一个辅助类,用来管理数据库的创建和版本他,它提供两个方面的功能

第一,getReadableDatabase()、getWritableDatabase

()可以获得SQLiteDatabase对象,通过该对象可以对数据库进行操作

第二,提供了onCreate()、onUpgrade()两个回调函数,允许我们再创建和升级数据库时,进行自己的操作

这个类只用于创建,升级数据库和表,具体数据在包action里操作

  1. public class DatabaseHelper extends SQLiteOpenHelper {  
  2.   
  3.     public static final String DB_DBNAME = "contact";  
  4.     public static final String DB_TABLENAME = "user";  
  5.     public static final int VERSION = 4;  
  6.   
  7.     /** 
  8.      * 在SQLiteOpenHelper的子类当中,必须有该构造函数 
  9.      *  
  10.      * @param context 
  11.      *            上下文对象 
  12.      * @param name 
  13.      *            数据库名称 
  14.      * @param factory 
  15.      * @param version 
  16.      *            当前数据库的版本,值必须是整数并且是递增的状态 ,并且必须大于等于1 
  17.      */  
  18.     public DatabaseHelper(Context context, String name, CursorFactory factory,  
  19.             int version) {  
  20.         // 必须通过super调用父类当中的构造函数,从而创建数据库;但是这里并不创建数据库,当调用getReadableDatabase()、getWritableDatabase()宾才会创建数据库。   
  21.         super(context, name, factory, version);  
  22.     }  
  23.   
  24.     public DatabaseHelper(Context context, String name) {  
  25.         super(context, name, null4);  
  26.     }  
  27.   
  28.     /** 
  29.      * 该函数是在第一次创建的时候执行,实际上是第一次得到SQLiteDatabase对象的时候才会调用这个方法,可以在这里创建数据表; 
  30.      */  
  31.     @Override  
  32.     public void onCreate(SQLiteDatabase db) {  
  33.         System.out.println("create a table");  
  34.         StringBuffer sql = new StringBuffer("");  
  35.         sql.append("create table ").append(DB_TABLENAME).append(" (")  
  36.                 .append("_id integer primary key autoincrement,")  
  37.                 .append("name text,").append("mobilephone text,")  
  38.                 .append("officephone text,").append("familyphone text,")  
  39.                 .append("address text,").append("othercontact text,")  
  40.                 .append("email text,").append("position text,")  
  41.                 .append("company text,").append("zipcode text,")  
  42.                 .append("remark text,").append("imageid int,")  
  43.                 .append("privacy int ").append(")");  
  44.         System.out.println(sql.toString());  
  45.         db.execSQL(sql.toString());  
  46.     }  
  47.   
  48.     /** 
  49.      * 升级数据库 
  50.      */  
  51.     @Override  
  52.     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
  53.         String sql = "drop table if exists " + DB_TABLENAME;  
  54.         db.execSQL(sql);  
  55.         onCreate(db);  
  56.     }  
  57.   
  58. }  

相关内容