【发布时间】:2011-03-25 10:19:54
【问题描述】:
我的表定义是:CREATE TABLE "Product" ("ProID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "BarCode" VARCHAR NOT NULL UNIQUE , "ProductName" VARCHAR NOT NULL );
当我插入数据时,我遇到了如下问题: 2011-03-25 15:43:08.792 BarCode12[6698:207] * -[sqlClass addRecord:]、/Users/admin/Desktop/BarCode14copy/Classes/sqlClass.m:121 中的断言失败 2011-03-25 15:43:08.793 BarCode12[6698:207] * 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“插入数据时出错。 '约束失败'' ...
编写的代码是: - (void) addRecord:(NSMutableDictionary *)recordDict {
if(addStmt == nil) {
const char *sql = "insert into Product(ProID, BarCode , ProductName ) Values(?,?,?)";
if(sqlite3_prepare_v2(database, sql, -1, &addStmt, NULL) != SQLITE_OK)
NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database));
}
NSInteger recordId = [[recordDict objectForKey:@"ProID"] intValue];
NSLog(@"%d",recordId);
sqlite3_bind_int(addStmt, 1,recordId);
sqlite3_bind_text(addStmt, 2, [[recordDict objectForKey:@"BarCode"] UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(addStmt, 3, [[recordDict objectForKey:@"ProductName"] UTF8String], -1, SQLITE_TRANSIENT);
if(SQLITE_DONE != sqlite3_step(addStmt))
NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
else
sqlite3_last_insert_rowid
rowID = sqlite3_last_insert_rowid(database);
NSLog(@"last inserted rowId = %d",rowID);
sqlite3_reset(addStmt);
}
我也尝试过没有限制,但同样的问题会继续..
如果一致性被删除,那么它会显示“数据库锁定”错误.. 我们怎样才能消除这个错误以及如何将数据插入数据库?
【问题讨论】:
标签: iphone database xcode ipad sqlite