所以我到目前为止依赖于onCreate
数据库的自动(差不多)onUpgrade
/ SQLite
方法。一切正常,我只需要更改数据库的版本号,让它自动运行onUpgrade
。
但是现在,我在尝试向我的数据库添加列并更改版本号时遇到了异常:
SQLiteException: Can't upgrade read-only database from version X to Y
查看我的代码,确定我的应用程序的第一个查询是SELECT
查询,我正在使用getReadableDatabase
打开与它的连接,因为请求不需要写访问。
所以我想知道,我该如何解决这个问题?我应该一直使用getWritableDatabase
吗? (作为一种解决方法,可以使我的更新通过)当然,如果两种方法都存在,那是因为它们是要使用的,并且连接在需要时针对只读访问进行了优化?我不想失去这个好处。
答案 0 :(得分:0)
我使用过的解决方法:在我的应用程序的“开始”处有一个只执行getWritableDatabase()
并关闭它的方法,以便在必要时触发所有需要的创建/更新。
答案 1 :(得分:0)
在我的情况下,存在语法错误:其中一个字段是SQL保留字。 但要查看有关语法的错误消息,我必须添加
dbHelper.getWritableDatabase().close();
到MainActivity.onCreate()
。
答案 2 :(得分:-1)
在创建语句期间,某些时间列名称会重复。
create table tbl (Col1 TEXT,Col2 INTEGER,Col3 INTEGER,Col1 INTEGER,Col5 INTEGER);
像这里Col1重复两次......