android sqlite升级表SQLiteOpenHelper的onUpgrade方法重复调用的问题
来源:互联网 发布:算法导论 目录 编辑:程序博客网 时间:2024/05/17 07:06
我在onUpgrade方法中为以前的表增加字段,使用的如下的sql语句
db.execSQL("ALTER TABLE angle_info ADD type INTEGER DEFAULT 0");
但是onUpgrade方法一直会执行,打印传入参数,oldVersion是4,newVersion是6
每一次操作数据库,Log日志会打印,如下
01-20 15:13:15.097: E/SQLiteLog(13142): (1) duplicate column name: type
重复的字列名,说明sql已经执行成功了,但是版本号没有更改成功。
我们来看一下SQLiteOpenHelper源码250-264行(api19源码)
try { if (version == 0) { onCreate(db); } else { if (version > mNewVersion) { onDowngrade(db, version, mNewVersion); } else { onUpgrade(db, version, mNewVersion); } } db.setVersion(mNewVersion); db.setTransactionSuccessful(); } finally { db.endTransaction(); }最后发现造成这个问题的原因是,升级表的sql语句没有以分号结尾,产生了错误,抛出异常,使得
db.setVersion(mNewVersion);没有执行,数据库版本号更新失败,所以会导致onUpgrade重复执行。
db.execSQL("ALTER TABLE angle_info ADD type INTEGER DEFAULT 0;//就是因为这个分号");
赶紧去检查你的sql吧。- =。
0 0
- android sqlite升级表SQLiteOpenHelper的onUpgrade方法重复调用的问题
- Android SQLiteOpenHelper Sqlite数据库升级onUpgrade
- sqlite数据库中SQLiteOpenHelper类的onUpgrade方法
- Android中SQLiteOpenHelper类的onUpgrade方法的作用
- Android中SQLiteOpenHelper类的onUpgrade方法的作用
- Android中SQLiteOpenHelper类的onUpgrade方法的作用
- Android中SQLiteOpenHelper类的onUPgrade()方法的作用
- Android中SQLiteOpenHelper类的onUpgrade方法的作用
- Android中SQLiteOpenHelper类的onUpgrade方法浅谈
- android开发(24)使用SQLiteOpenHelper的onUpgrade实现数据库版本升级
- 使用SQLiteOpenHelper的onUpgrade实现数据库版本升级
- SQLiteOpenHelper的onCreate和onUpgrade的区别
- SQLiteOpenHelper的oncreate与onupgrade的理解
- Android中的Sqlite中的onCreate方法和onUpgrade方法的执行时机
- Android中的Sqlite中的onCreate方法和onUpgrade方法的执行时机
- Android SQLiteOpenHelper onUpgrade使用注意事项
- Android中数据库升级onUpgrade方法说明
- Android中数据库升级onUpgrade方法说明
- 1010. 一元多项式求导
- 服务器编程之--用命名管道(FIFO)来做进程间通信
- 远程登录协议(TELNET)
- polyline转polygon
- 有关于tomcat的乱码问题
- android sqlite升级表SQLiteOpenHelper的onUpgrade方法重复调用的问题
- 云测试中QA团队的作用
- uva 10534 Wavio Sequence (最大递增和递减序列 n*logn)
- Autoconf/Automake自动化工具的使用——多文件同目录
- 计算机中的进制转换
- Android的icon尺寸
- vs报错C2011
- 成都华西假体垫鼻子主要采用哪些材料?
- Linux进程间通信——使用信号量