【玩转SQLite系列】(二)SQLite创建和打开数据库的三种方式

【玩转SQLite系列】(二)SQLite创建和打开数据库的三种方式,第1张

概述转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53234396 本文出自【DylanAndroid的博客】 【玩转SQLite系列】(二)SQLite创建和打开数据库三种方式 在上一篇 【玩转SQLite系列】(一)初识SQLite,重拾sql语句 中已经简单了解了下SQLite,不了解的可以去看一下。 我们发现,在Andr

转载请注明出处:http://www.jb51.cc/article/p-gntphaji-zw.html
本文出自【DylanAndroid的博客】

【玩转sqlite系列】(二)sqlite创建和打开数据库的三种方式

在上一篇 【玩转SQLite系列】(一)初识SQLite,重拾sql语句 中已经简单了解了下sqlite,不了解的可以去看一下。
我们发现,在AndroID中使用sqlite数据库的时候,创建和打开数据库的时候不止继承sqliteOpenHelper
这一种方式。目前我至少发现了三种方式:

1.自定义一个类继承sqliteOpenHelper;

2.使用Context.openorCreateDatabase();

3.sqliteDatabase.openorCreateDatabase();

那么这三种方式到底有什么不同?

第一种方式:继承sqliteOpenHelper打开或创建数据库

特点:可以在升级数据库版本的时候在回调函数里面做相应的 *** 作

1.创建MysqLiteOpenHelper类
package cn.bluemobi.dylan.sqlite;import androID.content.Context;import androID.database.DatabaseErrorHandler;import androID.database.sqlite.sqliteDatabase;import androID.database.sqlite.sqliteOpenHelper;import androID.util.Log;import java.util.logging.Logger;/** * AndroID *** 作使用sqlite的帮助类 * Created by dylan on 2016-11-19. */public class MysqLiteOpenHelper extends sqliteOpenHelper {    private final String TAG = "MysqLiteOpenHelper";    /** * 构造函数 * 一般用于在这里创建数据库,指定表名和版本号等 * * @param context 上下文对象 * @param name 数据库名称 * @param factory 游标工程 * @param version 数据版本号 >=1 */    public MysqLiteOpenHelper(Context context,String name,sqliteDatabase.CursorFactory factory,int version) {        super(context,name,factory,version);        Log.d(TAG,"MysqLiteOpenHelper");    }    /** * 创建数据库时调用 * <p> * 一般用于在创建数据表 * * @param db */    @OverrIDe    public voID onCreate(sqliteDatabase db) {        Log.d(TAG,"onCreate");    }    /** * 数据库升级更新时调用 * * @param db * @param oldVersion * @param newVersion */    @OverrIDe    public voID onUpgrade(sqliteDatabase db,int oldVersion,int newVersion) {        Log.d(TAG,"onUpgrade");    }}
2.创建数据库
/** * 第一种方式:继承sqliteOpenHelper打开或创建数据库 * 特点:可以在升级数据库版本的时候在回调函数里面做相应的 *** 作 * * @param v */    public voID sqliteOpenHelper(VIEw v) {        /**指定数据库的表名为info.db,版本号为1**/        MysqLiteOpenHelper MysqLiteOpenHelper = new MysqLiteOpenHelper(this,Contacts.DATABASE_name,null,Contacts.DATABASE_VERSION);        /**得到一个可写的数据库sqliteDatabase对象**/        sqliteDatabase sqliteDatabase = MysqLiteOpenHelper.getWritableDatabase();        /**查看改对象做添加的数据库**/        showDataBase(sqliteDatabase);    }
3.查看数据库文件是否创建成功

由于我用的是真机测试,而且没有Root,所以暂时采用这种方式去查看数据库文件是否创建成功

/** * 查看手机中由sqliteDatabase创建的的数据库文件 */       public voID showDataBase(sqliteDatabase sqliteDatabase) {           List<Pair<String,String>> ll = sqliteDatabase.getAttachedDbs();           for (int i = 0; i < ll.size(); i++) {               Pair<String,String> p = ll.get(i);               Log.d(Contacts.TAG,p.first + "=" + p.second);           }       }

4.打印结果

11-19 20:58:51.845 3422-3422/cn.bluemobi.dylan.sqlite D/sqlite: main=/data/data/cn.bluemobi.dylan.sqlite/databases/info.db

可以看出info.db数据库文件已经成功创建。

第二种方式:Context.openorCreateDatabase打开或创建数据库

特点:可以指定数据库文件的 *** 作模式

实现代码
/** * 第二种方式:Context.openorCreateDatabase打开或创建数据库 * 特点:可以指定数据库文件的 *** 作模式 * * @param v */    public voID context(VIEw v) {        /**指定数据库的名称为info2.db,并指定数据文件的 *** 作模式为MODE_PRIVATE**/        sqliteDatabase sqliteDatabase = this.openorCreateDatabase(Contacts.DATABASE_name2,MODE_PRIVATE,null);        /**查看改对象所创建的数据库**/        showDataBase(sqliteDatabase);    }

查看数据库文件是否创建成功

11-19 21:08:30.732 3422-3422/cn.bluemobi.dylan.sqlite D/sqlite: main=/data/data/cn.bluemobi.dylan.sqlite/databases/info2.db

第三种方式:sqliteDatabase.openorCreateDatabase打开或创建数据库

特点:可以指定数据库文件的路径

实现代码
/** * 第三种方式:sqliteDatabase.openorCreateDatabase打开或创建数据库 * 特点:可以指定数据库文件的路径 * * @param v */    public voID sqliteDatabase(VIEw v) {        file dataBasefile = new file(Environment.getExternalStorageDirectory() + "/sqlite",Contacts.DATABASE_name3);        if (!dataBasefile.getParentfile().exists()) {            dataBasefile.mkdirs();        }        sqliteDatabase sqliteDatabase = sqliteDatabase.openorCreateDatabase(dataBasefile,null);        showDataBase(sqliteDatabase);    }

查看数据库文件是否创建成功

11-19 21:09:32.767 3422-3422/cn.bluemobi.dylan.sqlite D/sqlite: main=/storage/emulated/0/sqlite/info3.db

最后我们通过查阅源码发现,其实继承sqliteOpenHelper和Context.openorCreateDatabase最后都是会调用sqliteDatabase.openorCreateDatabase去实现对数据库的 *** 作。

总结

以上是内存溢出为你收集整理的【玩转SQLite系列】(二)SQLite创建和打开数据库的三种方式全部内容,希望文章能够帮你解决【玩转SQLite系列】(二)SQLite创建和打开数据库的三种方式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/1165021.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-01
下一篇2022-06-01

发表评论

登录后才能评论

评论列表(0条)

    保存