zoukankan      html  css  js  c++  java
  • 数据的存储方式:SQLiteOpenHelper的用法

    Android为了让我们能够更加方便的的管理数据,专门提供了一个SQLiteOpenHelper类,它是一个抽象类,如果我们想要使用它,就需要创建一个自己帮助类去继承它,而且它有两个抽象的方法,分别是onCreate()和onUpgrade(),我们必须在自己的帮助类里面重写这两个方法,然后可以在其中去实现创建、升级数据库的逻辑。

    SQLiteOpenHelper中还有两个非常重要的实例方法:getReadableDatabase()和getWritableDatabase()。这两个方法都可以创建或打开一个现有的数据库,并返回一个可对数据库进行操作的对象,不同的是,当数据不可写入时(如磁盘已满)、getReadableDatabase()方法返回的对象将以只读方式去打开数据库,而getWritableDatabase()方法则将出现异常

    下面是我封装的继承SQLiteOpenHelper的类:

    public class SQLiteDBHelper extends SQLiteOpenHelper {
    
        public SQLiteDBHelper(Context context, final String dbName, final int dbVersion){
            super(context, dbName, null, dbVersion);
        }
    
        //第一次创建数据库的时候,调用onCreate方法(只调用一次)
        @Override
        public void onCreate(SQLiteDatabase db) {
        }
    
        //数据库版本号升级变更会调用onUpgrade函数(可用来创建新的数据库)
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    
        }
    
        /**
         * 添加,更新,删除数据
         * @param database
         * @param sql
         */
        public void operateData(SQLiteDatabase database, final String sql){
            if(sql != null){
                try {
                    database.execSQL(sql);
                }catch (SQLException e){
                    Log.e("OperateData", "operateData: " + e.toString());
                }
            }
    
        }
    
        /**
         * 查询数据
         * @param database
         * @param sql
         */
        public Cursor queryData(SQLiteDatabase database, final String sql){
            Cursor cursor;
            if (sql != null){
                try {
                    cursor = database.rawQuery(sql, null);
                    return cursor;
                }catch (SQLException e){
                    Log.e("QueryData", "queryData: "+ e.toString() );
                }
            }
            return null;
        }

    下面是SQLiteDBHelper的执行接口

    public class SqlExecute {
        private final static String dbName = "user";    //数据库名称
        private final static int db_version = 1;        //版本号
        private SQLiteDBHelper sqLiteDBHelper = null;
        private SQLiteDatabase database = null;
        private static SqlExecute sqlExecute = null;
    
        public static SqlExecute getInstance(){
            if(sqlExecute == null){
                sqlExecute = new SqlExecute();
            }
            return sqlExecute;
        }
    
        /**
         * 创建数据库
         * @param context
         */
        public void inIntDB(Context context){
            sqLiteDBHelper = new SQLiteDBHelper(context, dbName, db_version);
            try {
                database = sqLiteDBHelper.getWritableDatabase();
            }catch (Exception e){
                Log.e("SQLiteDatabase", e.toString());
            }
        }
    
        /**
         * 增、删、改、创建数据表
         * @param sql
         */
        public void operateData(String sql){
    
            sqLiteDBHelper.operateData(database, sql);
        }
    
        /**
         * 查询数据
         * @param sql
         */
        public Cursor queryData(String sql){
    
            return sqLiteDBHelper.queryData(database, sql);
        }
    }
  • 相关阅读:
    对Java课程的感想
    OO第二阶段总结
    OO第一作业周期(前四周)总结
    实验7 流类库和输入输出
    实验6 类的继承和多态
    实验5 类和对象3
    实验4 类与对象2
    实验3 类和对象
    实验2
    实验1
  • 原文地址:https://www.cnblogs.com/QingYiShouJiuRen/p/10791671.html
Copyright © 2011-2022 走看看