【问题标题】:using sqlite database,trying to insert values使用 sqlite 数据库,尝试插入值
【发布时间】:2011-06-06 08:53:50
【问题描述】:

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

- (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);

【问题讨论】:

标签: objective-c ios4 sqlite


【解决方案1】:

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

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

我想,它会起作用的。试试看

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 2021-10-17
    • 2020-03-24
    • 1970-01-01
    • 2011-03-20
    • 2014-11-01
    相关资源
    最近更新 更多