插入查询sqlite时出错

时间:2011-09-30 09:46:53

标签: iphone sqlite

我正在制作一个iphone应用程序,我正在使用sqlite。在一个类中,当我尝试插入一个字符串时,它会崩溃并发出以下错误

-[CFString UTF8String]:消息发送到解除分配的实例0xe555220

我不知道为什么会这样。

以下是我正在实施的插入查询。

-(void)againinsert
{
sqlite3_stmt *addStmt = nil;

if(addStmt == nil) 
{ 
    NSString *str = @"don't know";
    const char *sql = "insert into medicationdetail1(doctorname, emailid, medicationname,   status) 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, [comparedoctorname UTF8String], -1, SQLITE_TRANSIENT);
    sqlite3_bind_text(addStmt, 2, [globalemail    UTF8String], -1, SQLITE_TRANSIENT);
    sqlite3_bind_text(addStmt, 4, [comparemedic UTF8String], -1, SQLITE_TRANSIENT);
    sqlite3_bind_text(addStmt, 7, [str UTF8String], -1, SQLITE_TRANSIENT);
    if(SQLITE_DONE != sqlite3_step(addStmt))
    {
        NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
    }

}

}

当断点从第二个语句移动到第三个语句时,它会崩溃。

请提供解决方案。

非常感谢。

2 个答案:

答案 0 :(得分:1)

使用这个

sqlite3_bind_text(addStmt, 3, [comparemedic UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(addStmt, 4, [str UTF8String], -1, SQLITE_TRANSIENT);

答案 1 :(得分:1)

使用

sqlite3_bind_text(addStmt, 1, [comparedoctorname UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(addStmt, 2, [globalemail    UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(addStmt, 3, [comparemedic UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(addStmt, 4, [str UTF8String], -1, SQLITE_TRANSIENT);