关于数据库更新的问题

Jobernowl 2012-05-14 05:00:01

public DBHelper(Context context) {
super(context, DB_NAME, null, 3);
}


这是我写的DBHelper的类的构造方法 上面我写的version是3 之前没更新数据库的时候是2



现在的问题是我每次打开程序都会执行

@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {

}


这个方法 我用re打开我的程序的数据 查看我的db文件 发现更改了数据 但是版本号没更改 因为我调试 每次都执行onUpgrade 这个方法 而且没有报错



现在的问题是:
1.为什么执行onUpgrade成功那个后没有更改db文件的版本号?
2.为什么我卸载了程序重新装上还是会执行onUpgrade方法?


在onUpgrade 这个方法中我是有这个判断的 if(arg1 == 2) { } 也就是说这个2不知道从哪里来
...全文
126 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
多鱼的夏天 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

OK了 问题原因找到了 原来我写了两个DBHelper类 一个把version由2改成了3 另一个忘记改了 所以导致后面的一系列问题 感谢参与回答的
[/Quote]



我一般把db version 放在app定义常量的文件中,这样就不会出现这样的问题
念茜 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

OK了 问题原因找到了 原来我写了两个DBHelper类 一个把version由2改成了3 另一个忘记改了 所以导致后面的一系列问题 感谢参与回答的
[/Quote]

Well done
Jobernowl 2012-05-14
  • 打赏
  • 举报
回复
OK了 问题原因找到了 原来我写了两个DBHelper类 一个把version由2改成了3 另一个忘记改了 所以导致后面的一系列问题 感谢参与回答的
Jobernowl 2012-05-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

在onUpgrade()方法中,要先删掉已有的表,然后新建表。最后调用onCreate()方法。
[/Quote]

但是这样不太好 因为用户会发现他以前的数据不见了 我现在的做法都是先建立一个临时表 里面包含新字段 然后把旧表数据复制到包含新字段的新表 然后再删除旧表 再建立新表 最后把临时表数据复制到新表并删除临时表
李狗蛋52635 2012-05-14
  • 打赏
  • 举报
回复
我按lz说的试了一下,onUpgrade()里没写东西,只打了log,更新version正常的,重装也没有再upgrade过。

帮顶下
manoel 2012-05-14
  • 打赏
  • 举报
回复
在onUpgrade()方法中,要先删掉已有的表,然后新建表。最后调用onCreate()方法。

80,493

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧