sqlite 数据库的实践,事务和升级数据库
来源:互联网 发布:网络三大奇书 编辑:程序博客网 时间:2024/05/21 19:23
前几天学习这个地方的时候,卡了很久。一个是因为小米手机将sql数据库优化了,无法执行adb操作进行查询数据库。可以修复,但是很麻烦,弄了很久也没弄好。
跳过这一章之后,学习contentprovider也没弄好,因为很多例子都是用的sqlite数据库的东西。
所以,学习了几天service,其实也相当于复习。后来安装了genymotion模拟器,运行起来十分流畅,也是安卓原生态,所以将那一章的内容就好好学习了一遍。
P243
下面数据库学习实践项目的总结
1 使用事务
事务的特性就是两个事件,要么都完成,要么都不完成。适用于转账这个场景,转账成功,自己的账户扣除,同时对方的账户增加金额
两个事情,都必须完成,只完成一件事情,则会出现错误。此时,事务的机制就很好,要么都完成,要么都不成功。
数据库更新数据也一样,删除老数据,写入新数据。如果仅仅删除了老数据,没有写入新数据,必然产生错误。
delete()方法,和insert()方法。
增加一个按键,进行数据替换操作
在内部添加对应的逻辑,
SQLiteDatabase db=dbHelper.getWaritableDatabase();
db.beginTransaction();
try{
db.delete("book",null,null)
if(true) throw new NullPointerException();
ContentValues values=new ContentValues();
values.put("name","game of thrones");
values.put("author","George Martin");
values.put("pages",720);
values.put("price",20.85);
db.insert("book",null,values);
db.setTransactionSuccessful();
}
catch(Exception e){
e.printStackTrace();
}
finally{
db.endTransaction();
}
首先启动了事务,然后执行delete,此时手动抛出一个异常,然后续代码无法执行,则最后delete是不成功的
讲这个手动抛出动作注释掉,事务执行才完整,有一个setTransactionSuccessful才会执行
2升级数据库
运用
SQLiteOpenHelper中的upgrade方法
在里面添加逻辑
switch(oldversion){
case 1: db.execSQL(CREATE_CATEGORY);
case 2:db.execSQL(ADD_CATEGORYID);
}
在main中实例化这个db的时候dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 1);
最后那个是新的版本号,如果当前的版本号小于传入的版本号,就会执行upgrade函数
里面根据老版本号,进行对应的操作。
不加break是为了能够从任一版本升级至新版本。
以上均在虚拟机中跑的,效果都没什么问题。
- sqlite 数据库的实践,事务和升级数据库
- sqlite数据库的创建,升级和降级
- 2.1 SQLite数据库的创建和升级
- android sqlite数据库的事务
- SQLite数据库的创建及升级数据库
- SQLite 数据库的最佳实践
- SQLite 数据库的最佳实践
- 2.2 SQLite数据库的增删改查和事务
- Android黑群出品:SQLite数据库的使用和升级
- SQLite学习手册(数据库和事务)
- SQLite学习手册(数据库和事务)
- SQLite教程(五):数据库和事务
- SQLite学习手册(数据库和事务)
- SQLite学习手册(数据库和事务)
- Sqlite数据库 事务
- SQLite数据库事务使用
- sqlite 数据库升级
- 5、Sqlite数据库升级
- 使用nginx sticky实现基于cookie的负载均衡
- iOS 的几种传值方法
- 腾讯的C++面试真有趣
- 大数相乘
- mysql小记
- sqlite 数据库的实践,事务和升级数据库
- JAVA String类与常量池,堆之间的错综复杂...
- 【CCF】无线网络
- 大数乘法的几种算法分析及比较(2014腾讯南京笔试题)
- 求职之路(2015南京站拿到百度、美团、趋势科技、华为offer)
- 杂感
- Reactivecoco 文档翻译(1) 基本操作方法
- swwuwnzzvfitp
- EventBus, otto, LocalBroadcast的选择