【发布时间】:2012-03-14 16:08:27
【问题描述】:
这是我的代码:
- (void) addOrder {
if(addStmt == nil) {
const char *sql = "insert into item(menuid,itemName,price,quantity,spiciness) Values( ?, ?, ?, ?,?)";
if(sqlite3_prepare_v2(database, sql, -1, &addStmt, NULL) != SQLITE_OK)
NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database));
}
// NSLog(@"ADDSTMT:%@",addStmt);
sqlite3_bind_int(addStmt, 1, [menuID integerValue]);
sqlite3_bind_text(addStmt, 2, [itemName UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_double(addStmt, 3, price );
sqlite3_bind_int(addStmt, 4, [quantity integerValue]);
sqlite3_bind_text(addStmt, 5, [spiciness UTF8String],-1,SQLITE_TRANSIENT);
if(SQLITE_DONE != sqlite3_step(addStmt))
NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
else
menuID = [NSDecimalNumber numberWithLongLong:sqlite3_last_insert_rowid(database)];
//Reset the add statement.
sqlite3_reset(addStmt);
}
这里的数据被插入到数据库中,但是出现错误“约束失败”
【问题讨论】:
-
你的表结构是什么?
-
你的变量有哪些类型?现在数据库中有什么值?使用 intValue 而不是 integerValue 从其他类型获取整数。
-
这是我的表结构:menuID-integer,itemname-string,price-float,quantity-integer,spicines-string
-
在你写的 sql 中
itemName和 DB 表中itemname- 我想知道是不是这样。
标签: iphone objective-c ios database sqlite