在有时会在不同时刻创建数据表,这时候会创建多个OpenHelper操作数据库,有可能就会碰到no such table错误。

分析原因:创建数据库的表的时候,先判断数据库名是否相同,如果数据库名相同,并且数据库的版本名也是相同的,那么就会出现后面那张要创建的表通过OpenHelper的onCreate会创建失败,因为数据库名字和数据库版本名相同,就意味只操作同一个数据库,所以只会调用先前的OpenHelper的onCreate方法。

如果要创建成功后面的数据表有三种解决方法:

一、创建另外的数据库存放后面需要创建的表。(实际需求一般不这样做,一个项目不建议创建多个数据库)

二、将数据库的创建全部都写在一个OpenHelper里面。就没有先后顺序了版本也只有一个,不会出现多个OpenHelpe数据库的版本问题。直接在第一个OpenHelper里面将所有创建数据表的SQL语句执行完。

三、将后面创建表的SQL语句写在后面那个OpenHelper类的onUpgrade方法中,并且将(第一次创建数据库时,版本大小为0)版本在以前的基础上提升(将版本号变大),

如果当前传入的数据库版本号比上次创建或升级的版本号高,SQLiteOpenHelper就会调用onUpdate()方法。

实践发现。如果用第三种方法,在再次进入应用,调用第一个OpenHelper的构造方法,判断版本version的时候会出现版本向下转不了的情况,由于提升版本后,保存的是后面那个OpenHelper的高版本号,再次进入调用第一个OpenHelper的构造方法,两个版本不同,并且版本高于目前现在的这个OpenHelper的版本号,所以还是不可行,会出现onDowngrade转不了的错误。

还是建议使用第二种方法

sqlite no such table相关推荐

  1. SQLite - 下载安装与使用(Command Line Shell For SQLite)

    1.下载并安装 登录SQLite官网:https://www.sqlite.org/index.html,下载SQLite已经编译过的文件(Precompiled Binaries for Windo ...

  2. SQLite 删除表

    2019独角兽企业重金招聘Python工程师标准>>> SQLite 的 DROP TABLE 语句用来删除表定义及其所有相关数据.索引.触发器.约束和该表的权限规范. 使用此命令时 ...

  3. SQLite 使用教程2 语法

    http://www.runoob.com/sqlite/sqlite-syntax.html SQLite 语法 SQLite 是遵循一套独特的称为语法的规则和准则.本教程列出了所有基本的 SQLi ...

  4. SQLite命令行程序说明

    sqlite3: 一个SQLite数据库的命令行接口 译者注 原文地址:http://www.sqlite.org/sqlite.html SQLite库包含一个名字叫做sqlite3的命令行,它可以 ...

  5. 轻量级数据库Sqlite的使用

    SqLite是什么? SQLite是一个进程内的库,实现了自给自足的.无服务器的.零配置的.事务性的 SQL 数据库引擎.它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置. 就像 ...

  6. SQLite 数据库注入总结

    前言 SQLite 是一个进程内的库,实现了自给自足的.无服务器的.零配置的.事务性的 SQL 数据库引擎.它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置.SQLite 与 ...

  7. SQLite学习手册(数据表和视图)

    一.创建数据表: 该命令的语法规则和使用方式与大多数关系型数据库基本相同,因此我们还是以示例的方式来演示SQLite中创建表的各种规则.但是对于一些SQLite特有的规则,我们会给予额外的说明.注:以 ...

  8. SQLite 删除表(http://www.w3cschool.cc/sqlite/sqlite-drop-table.html)

    SQLite 删除表 SQLite 的 DROP TABLE 语句用来删除表定义及其所有相关数据.索引.触发器.约束和该表的权限规范. 使用此命令时要特别注意,因为一旦一个表被删除,表中所有信息也将永 ...

  9. SQLite 创建表(http://www.w3cschool.cc/sqlite/sqlite-create-table.html)

    SQLite 创建表 SQLite 的 CREATE TABLE 语句用于在任何给定的数据库创建一个新表.创建基本表,涉及到命名表.定义列及每一列的数据类型. 语法 CREATE TABLE 语句的基 ...

最新文章

  1. 软件开发详细设计说明书_汽车软件开发之ASPICE系统需求过程组
  2. mpvue 从零开始 女友的来电 4 flyio
  3. ZooKeeper学习-- Zookeeper简单介绍
  4. android 双层饼图_python:给表格加上双层饼图,让同事的图表黯然失色
  5. Java定时任务原理
  6. Bailian4110 圣诞老人的礼物-Santa Clau’s Gifts【背包+贪心】
  7. 85相似标准形06——初等因子、初等因子与不变因子的求法
  8. Spark深入浅出企业级最佳实践
  9. 基于ARM+FPGA低成本高实时Ethercat运动控制器解决方案
  10. 原始Young不等式
  11. HuaWei ❀ 双协议栈
  12. 深入理解color model(颜色模型)
  13. Android手机中取得当前时区(以GMT形式)
  14. matlab cftool光滑曲线导出为什么就不光滑了_博学 MATLAB如何导出精美的论文插图...
  15. 淘气的小丁-使用jQuery实现漂浮气球的效果
  16. 隔行插入行——《超级处理器》应用
  17. Python杀死Excel?众多模块哪家强
  18. PHP导出Excel方法大全
  19. 产品经理(22) #运营
  20. 实现微信产品问题反馈群实时监控与问题自动录入(上)

热门文章

  1. 牛批!简单几步,无坑部署最小化 K8S 集群
  2. 什么是JAVA要求的驼峰命名法
  3. 基于ThreeJS为3D模型添加贴图
  4. 解决argument list too long错误
  5. 完美程序员的十种特质(转)
  6. 脱单盲盒网页版源码及搭建教程,未知交友模式
  7. HTML5 画布 火柴人实例及代码
  8. uni-app获取当前苹果设备系统版本
  9. 如何在Excel中的日期和Unix时间戳之间进行转换?
  10. mysql获得当前时间,上个月的时间,去年的时间