【玩转SQLite系列】(二)SQLite创建和打开数据库的三种方式
2016-11-22 09:19
701 查看
转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53234396
本文出自【DylanAndroid的博客】
【玩转SQLite系列】文章目录
【玩转SQLite系列】(一)初识SQLite,重拾sql语句
【玩转SQLite系列】(二)SQLite创建和打开数据库的三种方式
【玩转SQLite系列】(三)通过sql语句操作SQLite数据库
【玩转SQLite系列】(四)通过Android提供的API操作SQLite数据库
【玩转SQLite系列】(五)SQLite数据库优化
【玩转SQLite系列】(六)SQLite数据库应用案例实现历史搜索记录
【玩转SQLite系列】(七)SQLite数据库轻量级ORM操作数据库工具类
我们发现,在Android中使用SQLite数据库的时候,创建和打开数据库的时候不止继承SQLiteOpenHelper
这一种方式。目前我至少发现了三种方式:
1.自定义一个类继承SQLiteOpenHelper;
2.使用Context.openOrCreateDatabase();
3.SQLiteDatabase.openOrCreateDatabase();
那么这三种方式到底有什么不同?
1.创建MySQLiteOpenHelper类
2.创建数据库
3.查看数据库文件是否创建成功
由于我用的是真机测试,而且没有Root,所以暂时采用这种方式去查看数据库文件是否创建成功
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数据库文件已经成功创建。
实现代码
查看数据库文件是否创建成功
11-19 21:08:30.732 3422-3422/cn.bluemobi.dylan.sqlite D/SQLite: main=/data/data/cn.bluemobi.dylan.sqlite/databases/info2.db
实现代码
查看数据库文件是否创建成功
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去实现对数据库的操作。
本文出自【DylanAndroid的博客】
【玩转SQLite系列】文章目录
【玩转SQLite系列】(一)初识SQLite,重拾sql语句
【玩转SQLite系列】(二)SQLite创建和打开数据库的三种方式
【玩转SQLite系列】(三)通过sql语句操作SQLite数据库
【玩转SQLite系列】(四)通过Android提供的API操作SQLite数据库
【玩转SQLite系列】(五)SQLite数据库优化
【玩转SQLite系列】(六)SQLite数据库应用案例实现历史搜索记录
【玩转SQLite系列】(七)SQLite数据库轻量级ORM操作数据库工具类
【玩转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创建和打开数据库的三种方式
- SQLiteOpenHelper(创建或打开数据库)
- 【Oracle XE系列之三】使用OMF方式手工创建Oracle XE数据库
- Android应用开发之sqlite使用模糊查询数据库数据的三种方式
- 打开、关闭、创建 数据库 -sqlite 基础教程(4)
- PHP连接数据库、创建数据库、创建表的三种方式
- sqlite使用之模糊查询数据库数据的三种方式(待完善)
- Windows下,文件(夹)选择/打开对话框的三种创建方式
- 【玩转SQLite系列】(七)打造轻量级ORM工具类SQLiteDbUtil操作数据库
- 【玩转SQLite系列】(七)打造轻量级ORM工具类SQLiteDbUtil操作数据库
- 打开、关闭、创建 数据库 -sqlite 基础教程(4)
- 打开、关闭、创建 数据库 -sqlite 基础教程(4)
- 打开、关闭、创建 数据库 -sqlite 基础教程(4)
- 不用SQLiteOpenHelper来打开和创建数据库
- Android SQLite数据库—几种打开方式
- 金蝶kis系列数据库(.ais)打开方法
- 使用ADO.NET和C#以编程方式创建 SQL Server 数据库
- 创建、修改、打开、关闭、显示、删除数据库
- sql2005创建了新用户不能打开数据库
- ACCESS"数据库提示它已经被别的用户以独占方式打开,或没有查看数据的权限"的问题