使用sqlite数据库,尝试插入值

时间:2011-01-10 06:42:36

标签: objective-c ios4 sqlite

爵士    我正在使用sqlite数据库动态存储数据。我已经在终端创建了数据库并将其添加到我的项目资源中。在该数据库中我创建了一个名为category的表。我的问题是当我运行应用程序并尝试插入值时在文本字段中,应用程序被终止,给出一个异常,即没有这样的表名为category.Im这个sqlite的新手,我真的不知道为什么会发生这种异常。请告诉我wat正在发生。我使用了以下编码..

- (void) addCategory{
    if(addStmt == nil) {
        const char *sql = "insert into Category(Categoryname, Fromquant,Toquant,Units) Values(?, ?, ?, ?)";
        if(sqlite3_prepare_v2(database, sql, -1, &addStmt, NULL) != SQLITE_OK)
            NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database));
    }

    sqlite3_bind_text(addStmt, 1, [Categoryname UTF8String], -1, SQLITE_TRANSIENT);
    sqlite3_bind_double(addStmt, 2, [Fromquant doubleValue]);
    sqlite3_bind_double(addStmt, 3, [Toquant doubleValue]);
    sqlite3_bind_text(addStmt, 4, [Units UTF8String], -1, SQLITE_TRANSIENT);

    if(SQLITE_DONE != sqlite3_step(addStmt))
        NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
    else
        //SQLite provides a method to get the last primary key inserted by using sqlite3_last_insert_rowid
        CategoryID = sqlite3_last_insert_rowid(database);

    //Reset the add statement.
    sqlite3_reset(addStmt);
}

在数据库中,表格如下:

CREATE TABLE "Category"("CategoryID",INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"Categoryname"VARCHAR,"Fromquant"REAL,"Toquant"REAL,"Units"VARCHAR);

1 个答案:

答案 0 :(得分:4)

我认为urs的create table命令是错误的。您还没有提到第一个字段的数据类型。只需在第一个字段后删除逗号即可。使用以下代码:

CREATE TABLE "Category"("CategoryID"INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"Categoryname"VARCHAR,"Fromquant"REAL,"Toquant"REAL,"Units"VARCHAR);

我认为,它会起作用。试试