我正在制作一个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));
}
}
}
当断点从第二个语句移动到第三个语句时,它会崩溃。
请提供解决方案。
非常感谢。
答案 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);