zoukankan      html  css  js  c++  java
  • Sqlite数据库创建、删除、降级笔记

      (1)、在创建sqlite数据库时需要注意oncreate()方法只有在第一次创建数据库时候运行。当数据库删除后也会执行,sqlite不支持数据库删除,但可以删除相应的文件,即删了数据库。当我们再次配置文件时候就会执行oncreate()了。

      (2)、onUpgrade()只有在版本号发生改变(增加)时候才会执行,很多时候我们直接在onUpgrade()里添加我们想插入的表或者列,但会报错,那是因为你之前版本onUpgrade里的语句会再次执行,若之前插入了表、或者行,此时会再执行一次,因此每次跟新数据库的时候就需要注释或者删掉以前的所有的语句(为了数据库的回复等,最好保存之前的操作)

     public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    46         /**
    47          * 执行数据库的降级操作
    48          * 1、只有新版本比旧版本低的时候才会执行
    49          * 2、如果不执行降级操作,会抛出异常
    50          */
    51         Log.i("PERSON", "***数据库降级了***:" + DB_VERSION);
    52         super.onDowngrade(db, oldVersion, newVersion);
    53     }
    

      (3)sqiite支持列的插入,但不支持删除,因此,不清楚如何删除列,我一般保存数据后删除表然后重建。

      (4)SQLiteOpenHelper 对象创建的时候,数据库还未创建,只有当SQLiteOpenHelper调用getWritableDatabase()时候才会创建数据库。

    下面是以2种方式来创建数据库,一种是创建类继承SQLiteOpenHelper,实现单例模式,然后调用getWritableDatabase()来创建数据库;一种是自定义一个datebace类,内部封装一个单例模式的SQLiteOpenHelper ,然后把SQLitehelper和SQLiteDatebace作为类对象组合的方式操作数据库。第二种相当于是封装了SQLiteDatebac,但是还不够完善为只写了open、close、必须还得写增删改查等功能,完成方法同close,都是借用内部的SQLiteDatebace实现,为了简单就不介绍了。

    第一种:

    package com.example.lammy.datebacedemo;
    
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    
    /**
     * Created by Lammy on 2016/10/17.
     */
    public class MyDatebaceHelper  extends SQLiteOpenHelper{
    
        private  static  String DATEBACE_NAME = "friends";
        private static  int VERSION = 1;
        static final String DATABASE_CREATE =
                "create table contacts( _id integer primary key autoincrement, " +
                        "name text not null, email text not null);";
        public  static MyDatebaceHelper myDatebaceHelper;
    
        private MyDatebaceHelper(Context context) {
    
            super(context, DATEBACE_NAME, null, VERSION);
            System.out.println("创建数据库");
    
        }
        public static MyDatebaceHelper getDataHelper(Context context)
        {
            if (myDatebaceHelper == null) {
                synchronized (MyDatebaceHelper.class) {
                    if (myDatebaceHelper == null) {
                        myDatebaceHelper = new MyDatebaceHelper(context);
                    }
                }
            }
            return  myDatebaceHelper;
        }
    
        @Override
        public void onCreate(SQLiteDatabase db) {
    
            System.out.println("创建数据库2");
            db.execSQL(DATABASE_CREATE);
        }
    
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    
        }
    
    
    
    }
    

      

    第二种:

    package com.example.lammy.datebacedemo;
    
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    
    /**
     * Created by Lammy on 2016/10/17.
     */
    public class MyDateBace {
        private  static  String DATEBACE_NAME = "friends";
        private static  int VERSION = 1;
        static final String DATABASE_CREATE =
                "create table contacts( _id integer primary key autoincrement, " +
                        "name text not null, email text not null);";
        public  static MydateHelper myDatebaceHelper;
        public  static SQLiteDatabase sqLiteDatabase;
    
        private  Context context;
        public MyDateBace( Context context)
        {
            this.context = context;
            myDatebaceHelper = MydateHelper.getDataHelper(context);
        }
    
    
        public  void open()
        {
            sqLiteDatabase = myDatebaceHelper.getWritableDatabase();
        }
        public  void close()
        {
            sqLiteDatabase.close();
        }
    
        static class MydateHelper extends SQLiteOpenHelper{
    
            private MydateHelper(Context context) {
                super(context, DATEBACE_NAME, null, VERSION);
                System.out.println("创建数据库");
    
            }
    
            public static   MydateHelper getDataHelper(Context context) {
                if (myDatebaceHelper == null) {
                    synchronized (MyDatebaceHelper.class) {
                        if (myDatebaceHelper == null) {
                            myDatebaceHelper = new MydateHelper(context);
                        }
                    }
                }
                return myDatebaceHelper;
            }
    
            @Override
            public void onCreate(SQLiteDatabase db) {
    
                System.out.println("创建数据库2");
                db.execSQL(DATABASE_CREATE);
            }
    
            @Override
            public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    
            }
    
        }
    
    
    }
    

      

  • 相关阅读:
    1058 A+B in Hogwarts (20)
    1036. Boys vs Girls (25)
    1035 Password (20)
    1027 Colors in Mars (20)
    1009. Product of Polynomials (25)
    1006. Sign In and Sign Out
    1005 Spell It Right (20)
    1046 Shortest Distance (20)
    ViewPager页面滑动,滑动到最后一页,再往后滑动则执行一个事件
    IIS7.0上传文件限制的解决方法
  • 原文地址:https://www.cnblogs.com/bokeofzp/p/4657839.html
Copyright © 2011-2022 走看看