0
的錯誤信息是:SQLite的插入問題
終止應用程序由於未捕獲的異常「NSInternalInconsistencyException」,理由是:「在插入錯誤」
我已經測試插件在我的數據庫與SQLiteManager和它工作正常。
這是我的代碼:
-(void) insertImage:(int) idImage
title:(NSString *) title
description:(NSString *) desc
URL:(NSString *) URL
ImageURL:(NSString *) imageURL
date:(NSString *) date{
char *errorMsg;
sqlite3 *database;
if (sqlite3_open([[self dataFilePath] UTF8String], &database) == SQLITE_OK) {
NSString *insertSQL = [NSString stringWithFormat:@"INSERT INTO tb_test VALUES(\'?\', \'?\', \'?\', \'?\', \'?\', \'?\');"];
sqlite3_stmt *stmt;
sqlite3_exec(database, "BEGIN", 0, 0, 0);
if (sqlite3_prepare_v2(database, [insertSQL UTF8String], -1, &stmt, nil) == SQLITE_OK) {
sqlite3_bind_int(stmt, 1, idImage);
sqlite3_bind_text(stmt, 2, [title UTF8String], -1, NULL);
sqlite3_bind_text(stmt, 3, [desc UTF8String], -1, NULL);
sqlite3_bind_text(stmt, 4, [URL UTF8String], -1, NULL);
sqlite3_bind_text(stmt, 5, [iamgeURL UTF8String], -1, NULL);
sqlite3_bind_text(stmt, 6, [date UTF8String], -1, NULL);
}
// NSLog(@"sqlite3_step(stmt) = %d", sqlite3_step(stmt));
if (sqlite3_step(stmt) != SQLITE_DONE) {
NSAssert1(0, @"Error on insert", errorMsg);
}
sqlite3_finalize(stmt);
sqlite3_exec(database, "COMMIT", 0, 0, 0);
sqlite3_close(database);
}
}
有人能幫助我嗎?
在此先感謝!
你爲什麼手工編寫SQL?浪費時間。至少使用FMDB。更好的解決方案是直接使用核心數據(並且將來也會爲您提供更好的iCloud集成)。 – bbum
我剛剛使用過,因爲這是我的第一個應用程序e我開始編程之前我不知道核心數據......順便說一句,這是一個應用程序,幾乎完全相同的一個android製作,並且我用SQLite也是如此。 – jMelnik
可移植性是直接使用SQLite的一個原因,但即使如此,iCloud集成可能會將您帶到Core Data。 – bbum