Android:在SQLite中没有这样的专栏

时间:2013-08-25 07:42:44

标签: java android sqlite

我是开发新手,我在android中遇到以下错误:

08-24 23:55:15.744: E/AndroidRuntime(29803): Caused by: android.database.sqlite.SQLiteException: no such column: customerName (code 1): , while compiling: INSERT INTO nncdjiftable (customerName, timeShift, date01, vendorGameThemePT, managerSignature, managerDate, jackpotAmount, lessTaxesWithheld, cashierSignature, taxRate, slotAttendantSignature, totalAmountPaid, slotSupervisorMODSignature, customerSignature, date03) VALUES (customerName, timeShift, date01, vendorGameThemePT, managerSignature, managerDate, jackpotAmount, lessTaxesWithheld, cashierSignature, taxRate, slotAttendantSignature, totalAmountPaid, slotSupervisorMODSignature, customerSignature, date03)

这是我的代码:

nncdjifdb.execSQL("CREATE TABLE IF NOT EXISTS nncdjiftable(customerName VARCHAR,timeShift VARCHAR,date01 VARCHAR,vendorGameThemePT VARCHAR,managerSignature VARCHAR,managerDate VARCHAR,jackpotAmount VARCHAR,lessTaxesWithheld VARCHAR,cashier VARCHAR,taxRate VARCHAR,slotAttendant VARCHAR,totalAmountPaid VARCHAR,slotSupervisorMOD VARCHAR,customerSignature VARCHAR,date03 VARCHAR);");

nncdjifdb.execSQL("INSERT INTO nncdjiftable (customerName, timeShift, date01, vendorGameThemePT, managerSignature, managerDate, jackpotAmount, lessTaxesWithheld, cashierSignature, taxRate, slotAttendantSignature, totalAmountPaid, slotSupervisorMODSignature, customerSignature, date03) VALUES (customerName, timeShift, date01, vendorGameThemePT, managerSignature, managerDate, jackpotAmount, lessTaxesWithheld, cashierSignature, taxRate, slotAttendantSignature, totalAmountPaid, slotSupervisorMODSignature, customerSignature, date03)");

我一直在使用一个教程来制作这个并且已经陷入了使用某些语法的几个点,所以我不得不修改它但似乎我打破了它更多,我在这里看了很多使用SQLITE没有这样的列,但看起来他们中的很多都使用不同的语法,我不太明白,因为我还是新手。

感谢任何帮助。

4 个答案:

答案 0 :(得分:0)

如果您在更改CREATE TABLE语句之前已经在表之前运行了该示例。

因为该表已经存在,所以它不会使用新列执行CREATE TABLE,并且因为这些列不存在,所以您在INSERT INTO语句中收到该错误。

您有几个选择:

  • 清除应用数据以删除数据库
  • 执行DROP TABLE nncdjiftable以删除表
  • 执行ALTER TABLE ADD COLUMN语句以添加缺少的列。

前两个是最简单的,但您将丢失数据库/表中的数据。

答案 1 :(得分:0)

您需要将您的变量提供给INSERT语句。请参阅下面应该使用的模式:

nncdjifdb.execSQL("INSERT INTO nncdjiftable 
(customerName, timeShift, date01, vendorGameThemePT, managerSignature, managerDate, jackpotAmount, lessTaxesWithheld, cashierSignature, taxRate, slotAttendantSignature, totalAmountPaid, slotSupervisorMODSignature, customerSignature, date03) 
VALUES ('"+someVariable+"',"+...+")");

使用execSQL可以选择字符串中的分号。

另外,我在Java代码被删除之前看到了它;所以我可以确认你的变量中确实有有效值。

答案 2 :(得分:0)

我不确定SQL,但如果你在第一个.execSQL中注意到它以

结尾
  

,date03 VARCHAR);“);

并在第二个

  

,date03)“);

注意引号中的; )。

答案 3 :(得分:0)

我不确定你是否没有发布一些相关的代码,但看起来你没有给你的变量一个值......例如。 customerName =“customerName”......等等。

相关问题