sqlite3-请教Android SQLite大神,我重复调用CREATE TABLE会将旧表覆盖吗?

问题描述

请教Android SQLite大神,我重复调用CREATE TABLE会将旧表覆盖吗?

我实现了一个DBHelper对象,在OnCreate()初始化的时候会这样处理。
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table download_info(_id integer PRIMARY KEY AUTOINCREMENT, thread_id integer)");
}

也就说每次创建DBHelper对象都会去执行CREATE TABLE。经我测试,这样不会重复创建表,或者创建新表将旧表覆盖。

但是我记得以前在书上看过创建表之前好像要‘IF NOT EXISTS’的判断才行。

我对这个就不是很了解了,网上也没有相关资料。有没有大大出来给我解释一下?我已经知道答案是不会覆盖旧表了,但是原理是什么有人知道吗???

解决方案

数据库是根据版本号更新的,而表是没有对应的版本号的,所以表是对应数据库的更新而更新的。
通过代码发现只有onUpgrade()时候即newVersion > oldVersion才更新,而onCreate()调用的是
SQLiteDatabase的openOrCreateDatabase()的方法的

解决方案二:

字面的意思,加了if not exists是指如果没有就创建

还有关键一点就是数据库文件如果存在是会直接onUpdate的,版本号如果比之前的高,就要丢弃之前的表Drop然后执行onCreate(db)

时间: 2024-11-03 15:09:59

sqlite3-请教Android SQLite大神,我重复调用CREATE TABLE会将旧表覆盖吗?的相关文章

android 布局-请教一下各位大神View.getHeight()和View.getMeasuredHeight()的区别

问题描述 请教一下各位大神View.getHeight()和View.getMeasuredHeight()的区别 请教一下各位大神View.getHeight()和View.getMeasuredHeight()的区别 解决方案 View中getMeasuredHeight()和getHeight()区别 解决方案二: getHigh在view绘制出来后才有值,getMeasuredHigh在view的测量阶段就有值了. 解决方案三: 原文地址:http://blog.csdn.net/xuj

请教各位算法大神,acm一道题:赋权无向图的最小权值遍历用什么算法(存在负权值)?

问题描述 请教各位算法大神,acm一道题:赋权无向图的最小权值遍历用什么算法(存在负权值)? 1C 如题,问题是这样的:有一赋权无向连通图,可以从任意一结点出发,求遍历所有结点的最小权值路线.结束点也是任意的,每个节点也没有访问次数的限制,但必须每个节点都要被访问到.,想问一下用什么算法呢? 解决方案 可以参考djstera算法,求最短路径~借鉴其中的标记功能,只不过结束状态标志是所有节点均已遍历. 解决方案二: 可以参考djstera算法,求最短路径~借鉴其中的标记功能,只不过结束状态标志是所

安卓-Android 求大神帮忙解决屏幕适配的问题

问题描述 Android 求大神帮忙解决屏幕适配的问题 小弟是一个初学者,不会弄这种屏幕适配的问题,如何让这些书本不论在何种尺寸的屏幕上都能刚好在书架上? 解决方案 1.相应的尺寸会有相应的文件,相应的文件有相应的图片. 2.在编程中尽量使用dp不要使用px

请教一下各路大神,C#中关于子类隐藏父类方法或属性的问题

问题描述 请教一下各路大神,C#中关于子类隐藏父类方法或属性的问题 比如说基类A有个方法 print(){}; A的子类B也有个方法print(){}; 那么,在B类中用修饰符new将父类中的该方法隐藏掉有什么意义 不隐藏有什么弊端么 解决方案 有个C#语法的问题吧,子类如果要重写父类的方法的话,virtual-override一定成对的. 子类不重写,而是创建一个属于自己的同名方法,就最好加个new咯. 如果不加new也等于new,但是编译器都会提醒你,加个标识比较好. 区别就是, class

web service-webservice调用请教,求大神解决!

问题描述 webservice调用请教,求大神解决! 最近在研究webservice,本人新手,遇到问题,想请假下,最好可以详细说明下怎么解决,谢谢,下面是myeclipse报的错: 解决方案 检查你的xsd的配置文件,你的xml有问题. 解决方案二: 你的配置文件出错了,检查一下 解决方案三: 求大神请教

注册登录-请教哪位大神帮忙讲解一下百度短信登录,非常感谢

问题描述 请教哪位大神帮忙讲解一下百度短信登录,非常感谢 短信登录 验证即登录,没有百度帐号也可以使用 手机号 发送动态密码 用短信收到的验证码就可以直接登录

模型-想请教一下各位大神 :博科交换机的各层分别实现的功能是什么???求赐教

问题描述 想请教一下各位大神 :博科交换机的各层分别实现的功能是什么???求赐教 在Opnet中需要用FC交换机搭建交换网络....看不懂自带的交换机模型的各层的功能???求各路大神赐教 解决方案 参考以下链接 http://wenku.baidu.com/view/67b41210f78a6529647d536f.html?re=view http://wenku.baidu.com/view/aeb68b330b4c2e3f572763ab.html

小白刚学数据结构,有问题请教,求大神解答

问题描述 小白刚学数据结构,有问题请教,求大神解答 请大神帮我看一下代码有什么问题,我一直找不出问题在哪里 #include #include #include #define maxsize 100; typedef char datetype; typedef struct { datetype date[maxsize]; int len; }sq; void creatlist(sq *L) { int n; int i; char tmp; printf("请输入一个数字给n:&quo

c#-请教:感谢大神的赐教 net C#找不到datalist1下的Datalist2

问题描述 请教:感谢大神的赐教 net C#找不到datalist1下的Datalist2 net C#datalist1下的Datalist2里的CheckBoxList1如何实现点击CheckBoxList1把结果记录到数据库中,现在是找不到Datalist2 解决方案 foreach (var item in CheckBoxList1.Items) { if (item.Checked) { 添加数据库的代码 } }