iPhone应用程序因sqlite3_bind_text()崩溃
我正在尝试制作一个简单的应用程序来存储和显示闪存卡,但是我在让我的SQLite正常工作的过程中遇到了麻烦。数据库连接很好,但是当我尝试插入时,它崩溃了,并且没有显示出哪里出了问题。这是我用来将闪存卡插入表中的代码iPhone应用程序因sqlite3_bind_text()崩溃,iphone,objective-c,sqlite,Iphone,Objective C,Sqlite,我正在尝试制作一个简单的应用程序来存储和显示闪存卡,但是我在让我的SQLite正常工作的过程中遇到了麻烦。数据库连接很好,但是当我尝试插入时,它崩溃了,并且没有显示出哪里出了问题。这是我用来将闪存卡插入表中的代码 const char *insert = "INSERT OR REPLACE INTO LIST (TERM, DEFINITION) VALUES (?, ?);"; sqlite3_stmt *statement; sqlite3_prepare_v2(database, ins
const char *insert = "INSERT OR REPLACE INTO LIST (TERM, DEFINITION) VALUES (?, ?);";
sqlite3_stmt *statement;
sqlite3_prepare_v2(database, insert, -1, &statement, nil);
sqlite3_bind_text(statement, 1, [term UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(statement, 2, [def UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_step(statement);
sqlite3_finalize(statement);
我已经确定bind text方法是我前面放置的一些NSLog()方法的薄弱环节。在本例中,term和def是nsstring,它们确实包含正确的值(我可以肯定这一点)。任何帮助都将不胜感激。我还没有完全掌握便携式c。不是100%为什么它不工作,但我有一些建议: 除掉旧毛病;在insert语句的末尾,我从来没有在我的语句中使用过它 将prepare和step放入这样的if语句中
if(sqlite3_prepare_v2(db, sql, -1, &statement, NULL) != SQLITE_OK) {
NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(db));
}
if (SQLITE_DONE != sqlite3_step(statement)) {
NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(db));
}
这些可能都没有帮助,但它可能会让你更接近到底出了什么问题
还有一件事可能会有所帮助。当我使用SQLite时,如果我对db进行了更改或者没有将正确的数据放入数据库,那将是一件非常痛苦的事情。我花了很多时间重置iPhone模拟器并清理构建如果使用包装器,或者只使用核心数据,就不会出现这个问题;除非您必须与非电话/Mac计算机共享数据库,否则使用CoreData有很多原因。