zoukankan      html  css  js  c++  java
  • Android几种打开SQLite的方法

    第一种:用SQLiteOpenHelper辅助类

      SQLiteOpenHelper类可以用来创建或打开数据库,两个关键的方法:onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)。当新建一个数据库时会调用前者,一般在里面做一些创建表或视图的操作。数据库版本升级时则会调用后者。

      当第一次调用getReadableDatabase()方法或getWritableDatabase()方法即可返回一个SQLiteDatabase对象。如果是第一次调用,则会创建数据库。随后可使用SQLiteDatabase对象的方法进行数据操作,如:execSQL(), insert(), update(), query(), rawQuery(), delete()等。

      PS:通过该方法创建的数据库存放的目录是固定的,其路径为/data/data/packageName/databases/

    第二种:用Context类的openOrCreateDatabase()方法

      openOrCreateDatabase(String dbName, int mode, CursorFactory factory);

      dbName:数据库操作模式:默认值为MODE_PRIVATE(0),可选值:MODE_WORLD_READABLE, MODE_WORLD_WRITABLE, MODE_ENABLE_WRITE_AHEAD_LOGGING

      factory:附加的一个工厂类,当SQLiteDatabase实例的query函数被调用时,会使用该工厂类返回一个Cursor。可为null。

    PS:该方法得到的数据库文件,其存储路径与上一方法相同。

    第三种:直接调用SQLiteDatabase类的静态方法openOrCreateDatabases()

    SQLiteDatabase类有几个静态方法可直接打开或创建数据库。

    //等同于openDatabase(path, factory, SQLiteDatabase.CREATE_IF_NECESSARY)

    openOrCreateDatabase(String path, CursorFactory factory)

    //等同于openDatabase(file.getPath(), factory, SQLiteDatabase.CREATE_IF_NECESSARY)

    openOrCreateDatabase(File file, CursorFactory factory)

    //等同于openDatabase(file.getPath(), factory, SQLiteDatabase.CREATE_IF_NECESSARY, errorHandler)

    openOrCreateDatabase(String path, CursorFactory factory, DatabaseErrorHandler errorHandler)

    PS:该方法打开或创建的数据库文件可与上述两个方法的路径不同。

    还是上个代码看着更爽

     1 //第一种
     2         SQLiteDatabase db = mySqliteOpenHelper.getReadableDatabase();
     3         db.execSQL("alter table info add number1 vchar(20)");
     4 
     5         //第二种
     6         //获取info.db的路径
     7         File file = new File(getApplication().getDatabasePath("info.db").getPath());
     8         SQLiteDatabase db1 = SQLiteDatabase.openOrCreateDatabase(file,null);
     9         db1.execSQL("alter table info add number2 vchar(20)");
    10 
    11         //第三种,
    12         SQLiteDatabase db2 = this.openOrCreateDatabase("info.db",0,null);
    13         db.execSQL("alter table info add number3 vchar(20)");

    ps:前几天面试被面试官问到过这个问题。

    GitHub:https://github.com/godfunc
    博客园:http://www.cnblogs.com/godfunc
    Copyright ©2019 Godfunc
  • 相关阅读:
    F#学习开篇(一)
    F#学习(二)
    认识“闭包”
    Silverlight显示控件换行的几种方式
    关于P问题、NP问题、NPC问题
    LINQ&EF任我行(二)LinQ to Object
    WPF中资源的引用方法
    Linq to EF 与Linq to Object 使用心得
    C#中如何用拼音模糊匹配汉字的首字母
    WPF获取应用程序路径方法,获取程序运行路径方法
  • 原文地址:https://www.cnblogs.com/Godfunc/p/6022102.html
Copyright © 2011-2022 走看看