在SQLite数据库表中定义列

时间:2014-12-28 10:03:27

标签: android

我复制了一个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

我没有正确定义列吗?

2 个答案:

答案 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));