zoukankan      html  css  js  c++  java
  • [转]SQLiteOpenHelper

    本文转自:http://code.google.com/p/androidlearn/wiki/SQLiteOpenHelper

    继承SQLiteOpenHelper类,在构造方法中分别需要传入Context,数据库名称,CursorFactory(一般传入null,为默认数据库),数据库版本号(不能为负数)。在SQLiteOpenHelper中首先执行的是onCreate方法(当shujk第一次被创建时)。在构造函数时并没有真正创建数据库,而在调用getWritableDatabase或者getReadableDatabase方法时才真正去创建数据库,返回一个SQLiteDatabase对象。

    public class MyDataBaseAdapter 
    { 
       
    // 用于打印log 
       
    private static final String TAG = "MyDataBaseAdapter"; 
     
       
    // 表中一条数据的名称 
       
    public static final String KEY_ID = "_id"; 
     
       
    // 表中一条数据的内容 
       
    public static final String KEY_NUM = "num"; 
       
    // 表中一条数据的id 
       
    public static final String KEY_DATA = "data"; 
     
       
    // 数据库名称为data 
       
    private static final String DB_NAME = "Examples_06_06.db"; 
             
       
    // 数据库表名 
       
    private static final String DB_TABLE = "table1"; 
             
       
    // 数据库版本 
       
    private static final int DB_VERSION = 1; 
     
       
    // 本地Context对象 
       
    private Context mContext = null; 
             
       
    //创建一个表 
       
    private static final String DB_CREATE = "CREATE TABLE " + DB_TABLE + " (" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NUM + " INTERGER,"+ KEY_DATA + " TEXT)"; 
     
       
    // 执行open()打开数据库时,保存返回的数据库对象 
       
    private SQLiteDatabase mSQLiteDatabase = null; 
     
       
    // 由SQLiteOpenHelper继承过来 
       
    private DatabaseHelper mDatabaseHelper = null; 
             
             
       
    private static class DatabaseHelper extends SQLiteOpenHelper{ 
     
         
    /* 构造函数-创建一个数据库 */ 
         
    DatabaseHelper(Context context){ 
     
             
    //当调用getWritableDatabase()  
             
    //或 getReadableDatabase()方法时 
             
    //则创建一个数据库 
             
    super(context, DB_NAME, null, DB_VERSION); 
         
    } 
     
         
    /* 创建一个表 */ 
         
    @Override 
         
    public void onCreate(SQLiteDatabase db){ 
     
             
    // 数据库没有表时创建一个 
             db
    .execSQL(DB_CREATE); 
         
    } 
     
         
    /* 升级数据库 */ 
         
    @Override 
         
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){ 
     
             db
    .execSQL("DROP TABLE IF EXISTS notes"); 
             onCreate
    (db); 
         
    } 
       
    } 
             
       
    /* 构造函数-取得Context */ 
       
    public MyDataBaseAdapter(Context context){ 
     
             mContext
    = context; 
       
    } 
     
     
       
    // 打开数据库,返回数据库对象 
       
    public void open() throws SQLException{ 
     
             mDatabaseHelper
    = new DatabaseHelper(mContext); 
             mSQLiteDatabase
    = mDatabaseHelper.getWritableDatabase(); 
       
    } 
     
     
       
    // 关闭数据库 
       
    public void close(){ 
     
             mDatabaseHelper
    .close(); 
       
    } 
     
       
    /* 插入一条数据 */ 
       
    public long insertData(int num, String data){ 
     
             
    ContentValues initialValues = new ContentValues(); 
             initialValues
    .put(KEY_NUM, num); 
             initialValues
    .put(KEY_DATA, data); 
     
             
    return mSQLiteDatabase.insert(DB_TABLE, KEY_ID, initialValues); 
       
    } 
     
       
    /* 删除一条数据 */ 
       
    public boolean deleteData(long rowId){ 
     
             
    return mSQLiteDatabase.delete(DB_TABLE, KEY_ID + "=" + rowId, null) > 0; 
       
    } 
     
       
    /* 通过Cursor查询所有数据 */ 
       
    public Cursor fetchAllData(){ 
     
             
    return mSQLiteDatabase.query(DB_TABLE, new String[] { KEY_ID, KEY_NUM, KEY_DATA }, null, null, null, null, null); 
       
    } 
     
       
    /* 查询指定数据 */ 
       
    public Cursor fetchData(long rowId) throws SQLException{ 
     
         
    Cursor mCursor = mSQLiteDatabase.query(true, DB_TABLE, new String[] { KEY_ID, KEY_NUM, KEY_DATA }, KEY_ID + "=" + rowId, null, null, null, null, null); 
     
         
    if (mCursor != null){ 
     
             mCursor
    .moveToFirst(); 
         
    } 
         
    return mCursor; 
     
       
    } 
     
       
    /* 更新一条数据 */ 
       
    public boolean updateData(long rowId, int num, String data){ 
     
         
    ContentValues args = new ContentValues(); 
          args
    .put(KEY_NUM, num); 
          args
    .put(KEY_DATA, data); 
     
         
    return mSQLiteDatabase.update(DB_TABLE, args, KEY_ID + "=" + rowId, null) > 0; 
       
    } 
             
    }
  • 相关阅读:
    js 99乘法表
    微信小程序 富文本插件 循环渲染方式
    Mysql: mysqlbinlog命令查看日志文件
    Java Mail 发送邮件(SSL加密方式,TSL加密方式)
    进程和线程的区别
    Java 制作证书(Windows 和Linux)
    Linux 常用命令标记
    Java clone克隆方法 --深拷贝--浅拷贝 --原型模型
    tomcat内存溢出:PermGen space解决方法
    Java 多线程 ---- 线程中this与 Thread.currentThread()线程的区别
  • 原文地址:https://www.cnblogs.com/freeliver54/p/2784714.html
Copyright © 2011-2022 走看看