SQLite 教程 | 菜鸟教程
Android Studio保存并查看SQLite数据库文件【Android】AndroidStudio3.0+保存并查看SQLite数据库文件_midnight_time的博客-CSDN博客_androidstudio查看数据库
使用Android Studio的Database Navigator插件查看SQLite数据库(1)找到File -> Setting -> Plugins 搜索插件Database Navigator,安装该插件;
(2)Android Studio右下角有个Device FileExplorer(若没有找到,则进行第3步,调出Device FileExplorer),进入/data/data/com.example.databaseset/databases/目录下,可以看到已经有了一个Usr.db文件(前提是你已经创建了一个数据库);
(3)若第2步中未找到Device FileExplorer,则按如下图示操作:
(4)右键点击databases文件,下载整个文件;
(5)安装了Database Navigator插件后,Android Studio左边缘会有一个DB Browser工具,点击它进入,再点击左上角"+"号,添加SQLite数据库连接,配置时选择你下载的db数据库文件,就可以查看这个数据库啦;
SQLiteOPenHelper类 1. onUpgrade的两种更新方式SQLite数据库升级的时候会走SQLiteOpenHelper的onUpgrade回调,那么在这里就有两种实现思路。
1. 保证onCreate中的建表语句是最新的,然后在onUpgrade回调的时候,进行四个步骤:
(1)保存旧数据
(2)删除过时的表
(3)创建表
(4)将旧数据保存回新的表
代码实现大概如下:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
saveDataToList(db, oldVersion, newVersion);
dropTable(db, oldVersion, newVersion);
onCreate(db);
insertDataToDB(db, oldVersion, newVersion);
}
2. 这是《第一行代码》中的做法,这也是升级数据库的最佳写法,就是在onUpgrade中使用switch判断oldVersion,对每个版本分别处理,但每个版本处理完都不写break,这样保证数据库无论从哪个版本开始升级,都能升级到最终的版本。代码实现大致如下:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch (oldVersion){
case 1:
db.execSQL(CREATE_SQL_2);
case 2:
db.execSQL(CREATE_SQL_3);
default:
}
}
那么问题来了,哪种方案才是最佳写法呢?
第一种,对于最新的数据库结构一目了然,但是在版本更新的过程中难免会出现各版本数据表字段不一致的情况,这种写法在临时存数据和重新写回数据库时可能会出现混乱。
第二种,对于数据库升级过程一目了然,但是数据库更新的多了,最终的结构必然会不容易一眼看穿。
(1)首先要了解数据库的更新,即onUpgrade()函数,我们把对数据库结构修改的操作放在onUpgrade()函数中,即添加数据表、修改数据表结构、删除数据表等操作;
(2)要对数据库结构进行修改,就要执行onUpgrade()函数,什么情况下会调用该函数呢?这就要说到version参数了,当前数据库是有一个version值的,创建DBHelper时,也有一个参数是要填入version值的,当创建的DBHelper对象的version值高于当前数据库的version值时,就会执行onUpgrade()函数,从而修改数据库结构;
3. 各方法被调用的时机onCreate(SQLiteDatabase db) :当数据库被首次创建时执行该方法,一般将创建表等初始化操作在该方法中执行。
onUpgrade(SQLiteDatabse dv, int oldVersion,int new Version):当打开数据库时传入的版本号与当前的版本号不同时会调用该方法。
除了上述两个必须要实现的方法外,还可以选择性地实现onOpen 方法,该方法会在每次打开数据库时被调用。



