Sqlite列无法在创建时创建

时间:2015-11-04 09:15:05

标签: android sqlite

我面临一个奇怪的问题。我使用以下查询在sqlite中创建数据库

String GROUP_TABLE = "groups";
String ROW_ID = "rowid";
String GROUP_ID = "GroupID";
String GROUP_NAME = "GroupName";
String GROUP_STATUS = "GroupStatus";
String IS_ADMIN = "IsAdmin";
String GROUP_TYPE = "GroupType";
String IS_PUBLIC = "IsPublic";
String LAST_UPDATE = "LastUpdate";

String groupQuery = "CREATE TABLE IF NOT EXISTS "+ GROUP_TABLE +" ("
        +ROW_ID+" INTEGER PRIMARY KEY, "
        +GROUP_ID+" TEXT, "
        +GROUP_NAME+" TEXT, "
        +GROUP_STATUS+" TEXT, "
        +GROUP_TYPE+" TEXT, "
        +IS_ADMIN+" TEXT, "
        +IS_PUBLIC+" TEXT, "
        +LAST_UPDATE+" TEXT);";

这是sqlite adb命令

给出的模式
H:\adt-bundle-windows-x86_64-20140702\sdk\platform-tools>sqlite3
SQLite version 3.8.10.2 2015-05-20 18:17:19
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open mydb.db
sqlite> .full schema
Usage: .fullschema
sqlite> .fullschema
CREATE TABLE android_metadata (locale TEXT);
CREATE TABLE groups (rowid INTEGER PRIMARY KEY, GroupID TEXT, GroupName     TEXT, GroupStatus TEXT, GroupType TEXT, IsAdmin TEXT, IsPubli
c TEXT, LastUpdate TEXT);
/* No STAT tables available */

当我第一次输入记录时,没有任何问题。但是当我下次尝试输入记录时

E/SQLiteLog﹕ (1) table groups has no column named LastUpdate
11-04 14:35:01.850  11947-11974/? E/SQLiteDatabase﹕ Error inserting         GroupType=1 GroupID=553 LastUpdate=2015-08-08T14:17:14.000Z IsAdmin=1     GroupName=SAIFOOTWEARS GroupStatus=1
android.database.sqlite.SQLiteException: table groups has no column named     LastUpdate (code 1): , while compiling: INSERT INTO     groups(GroupType,GroupID,LastUpdate,IsAdmin,GroupName,GroupStatus) VALUES     (?,?,?,?,?,?)

当我再次检查架构时,列就丢失了。

H:\adt-bundle-windows-x86_64-20140702\sdk\platform-tools>sqlite3
SQLite version 3.8.10.2 2015-05-20 18:17:19
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open mydb.db
sqlite> .fullschema
CREATE TABLE android_metadata (locale TEXT);
CREATE TABLE groups ( rowId INTEGER PRIMARY KEY,GroupID TEXT, GroupName     TEXT,GroupStatus TEXT,IsAdmin TEXT, GroupType TEXT, IsPublic
TEXT);
/* No STAT tables available */

这方面的任何线索都会有很大的帮助。

1 个答案:

答案 0 :(得分:0)

首次创建数据库时调用的sqliteOpenHelpers的onCreate()方法。这是表的创建和表的初始填充的地方。

我认为您第一次创建数据库时不包含LastUpdate列。之后你把它包括在内了。但你的表是第一次创建的。所以当adb为你的应用程序获得相同的数据库版本时,它不会更新你的数据库。

试试这个 更改您的数据库版本号。或者从手机中卸载应用并再次运行。

如果问题没有解决。那么请在课题中提供您班级的完整代码。