android数据库中不存在列

时间:2012-07-03 12:25:02

标签: android database

在我的应用程序中,我创建了一个数据库,并尝试在该表中插入值。但是我收到了以下错误:

 android.database.sqlite.SQLiteException: table income has no column named recurrence: , while compiling: INSERT INTO income(recurrence, salary, description) VALUES(?, ?, ?);

我的代码是:

数据库创建:

"create table income(_id integer primary key autoincrement,"+"salary text not null,description text not null,"+"recurrence text not null);";

我的插入查询:

public long insertTitle(String income, String desc,String recurr)
{
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_INCOME, income);
initialValues.put(KEY_DESC, desc);
initialValues.put(KEY_RECURR, recurr);
//initialValues.put(KEY_PUBLISHER, publisher);
return db.insert(DATABASE_TABLE, null, initialValues);
}

3 个答案:

答案 0 :(得分:0)

尝试清除Android设备上的数据库。也许您应用程序不会覆盖新数据库并使用旧数据库。这可能是造成此错误的原因。

答案 1 :(得分:0)

不确定错误的确切位置,但我建议您使用adb检查数据库。 使用以下步骤。

  1. 打开命令提示符
  2. 导航到您的android sdk文件夹 - >平台工具
  3. adb -e shell
  4. cd data / data / your.package.name / databases
  5. sqlite3 YOUR_DATABASE.db
  6. 现在运行.tables.schema income命令
     或select * from income;
  7. 如果您的桌子已经创建,您将会知道。

    你也可以编写虚拟插入命令来检查它是否正常工作。

    Insert into income values(1,"salary","desc","rec");
    

答案 2 :(得分:0)

你错过了一个'+'号:

把这一个尝试:

"create table income(_id integer primary key autoincrement,"+"salary text not null,"+"description text not null,"+"recurrence text not null);";

在运行之前不要忘记清除应用程序的数据。