Android,Android中的表创建错误

时间:2013-06-17 09:44:54

标签: android

我的sqlite数据库中有两个表。我想根据按钮点击对表数据库进行操作。当button1单击时,它将插入到pdsource表中,并在button2上单击它将插入到pdreview表中。

按钮1功能正常。但Button2单击会产生问题。

我的表格创建脚本

CREATE TABLE "pdsource" ("Id" INTEGER PRIMARY KEY  NOT NULL ,"AudioFileName" 
    TEXT,"AudioFilePath" TEXT,"TextFileName" TEXT,"TextFilePath" TEXT,"DateTime" 
    TEXT,"Duration" TEXT,"Attempts" TEXT)

CREATE TABLE pdreview(
    reviewId     INTEGER, 
    priid Integer, 
    fwords Text,
    Gr Text,
    dslow Text,
    orating Text,
    comments Text,
    FOREIGN KEY(reviewId) REFERENCES pdsource(id)
)

我会在此处粘贴LogCat错误

06-17 14:49:22.006: I/SqliteDatabaseCpp(6423): sqlite returned: error code = 1, msg = no such table: pdreview, db=/data/data/com.first.personalitydevelopment/databases/PersonalityDevelopment.db
06-17 14:49:22.042: E/SQLiteDatabase(6423): Error inserting orating=good Gr=Noun missing fwords=hmm prid=1 dslow=medium comments=Excellent
06-17 14:49:22.042: E/SQLiteDatabase(6423): android.database.sqlite.SQLiteException: no such table: pdreview: , while compiling: INSERT INTO pdreview(orating,Gr,fwords,prid,dslow,comments) VALUES (?,?,?,?,?,?)

2 个答案:

答案 0 :(得分:0)

请参阅链接的第4.3节,以创建一个帮助程序类来管理您的数据库。

http://www.vogella.com/articles/AndroidSQLite/article.html

此外,无需用引号括起列名。 在pdreview的create语句中,priid被声明但是在insert中,你引用了prid。 你还需要执行  每次打开数据库以启用外键时,“PRAGMA foreign_keys = ON”。

检查这是否有效。

答案 1 :(得分:0)

您的第二张表尚未创建。

要检查您的桌子是否在数据库中,您可以通过adb

访问它

转到Android SDK> plaform-tools目录并执行命令

>adb shell

>sqlite3 /data/data/com.first.personalitydevelopment/databases/PersonalityDevelopment.db

>.tables>select * from pdreview

*第一个返回数据库的所有表

如果您的表不存在,可能是由于脚本问题,请执行第二个表脚本。

如果没有在那里创建你的脚本有错误(我不知道sqlite是否敏感,因为我看到你的引用“id”不是“Id”,也许这是错误)。

如果您的表已成功创建,则必须知道您无法修改先前创建的数据库。第一次创建数据库时,它将在onCreate上执行脚本,稍后,如果要更新,则有两个选项:

  • 您的应用程序已上市:您必须更新数据库版本,以便android执行onUpgrade功能,您必须删除旧表并执行新脚本。

    < / LI>
  • 您正在开发:通过设置清除数据并重新执行onCreate(或卸载应用程序)