我复制了一个SQLite数据库示例,其中我创建了一个包含3个字段/列的表,并插入了一个包含3个值的记录,如下所示:
>SQLiteDatabase db = openOrCreateDatabase("MyDB",MODE_PRIVATE,null);
>db.execSQL("CREATE TABLE IF NOT EXISTS FunnyNames(Email VARCHAR(255), FirstName VARCHAR(255), LastName VARCHAR(255));");
>db.execSQL("INSERT INTO FunnyNames VALUES('abath@aol.com','Anita','Bath')");
..我收到此错误消息
>12-28 11:35:00.896: E/SQLiteLog(8857): (1) table FunnyNames has 1 columns but 3 values were supplied
我没有正确定义列吗?
答案 0 :(得分:3)
IF NOT EXISTS
仅在不存在的情况下创建表。可能你已经在数据库文件中有一个具有该给定名称的表,并且该表只有1列。
卸载您的应用或在应用管理器中清除其数据以删除旧的数据库文件。或者在DROP TABLE IF EXISTS FunnyNames
之前添加CREATE TABLE
。
答案 1 :(得分:-1)
您错过了桌子的主键。每个表都需要一个主键(这是一个唯一的id)来引用数据。修改您的create语句如下:
CREATE TABLE IF NOT EXISTS FunnyNames(_id INTEGER PRIMARY KEY AUTOINCREMENT, Email VARCHAR(255), FirstName VARCHAR(255), LastName VARCHAR(255));