有人可以帮我解决这个问题。为了将值保存在我的iPhone应用程序中,我使用了SQLite3。我的数据库中有很多重复的值。所以,为了消除这个问题,我打算在表上写一些独特的约束。我的约束应该是这样一种方式,即名字,姓氏和电子邮件相同的联系人,我想忽略它。SQLite中的唯一约束
当我试图在我的表定义中实现唯一约束时,它给我一个错误。我通过检查sqlite.org中的语法来尝试这一点。请参阅我的表格创建方法,并请帮助我。如果你有更好的解决方案,请告诉我。如果需要,我会很高兴为您提供任何信息。
我在我的数据库中有36个字段,其中field3是firstname,field4是lastname,field31是电子邮件。另外,请让我知道如果我们应该在插入或选择行时使用此约束。我会等你的回复..谢谢!
此方法中的错误:预期:前(令牌我试过很多方法,但它没有工作
-(void) createTableNamed:(NSString *) tableName withField1:(NSString *) field1 withField2:(NSString *) field2 withField3:(NSString *) field3 withField4:(NSString *) field4
withField5:(NSString *) field5 withField6:(NSString *) field6 withField7:(NSString *) field7 withField8:(NSString *) field8 withField9:(NSString *) field9
withField10:(NSString *) field10 withField11:(NSString *) field11 withField12:(NSString *) field12 withField13:(NSString *) field13 withField14:(NSString *) field14
withField15:(NSString *) field15 withField16:(NSString *) field16 withField17:(NSString *) field17 withField18:(NSString *) field18 withField19:(NSString *) field19
withField20:(NSString *) field20 withField21:(NSString *) field21 withField22:(NSString *) field22 withField23:(NSString *) field23 withField24:(NSString *) field24
withField25:(NSString *) field25 withField26:(NSString *) field26 withField27:(NSString *) field27 withField28:(NSString *) field28 withField29:(NSString *) field29
withField30:(NSString *) field30 withField31:(NSString *) field31 withField32:(NSString *) field32 withField33:(NSString *) field33 withField34:(NSString *) field34
withField35:(NSString *) field35 withField36:(NSString *) field36 UNIQUE(field3,field4,field31){
char *err;
NSString *sql = [NSString stringWithFormat:
@"CREATE TABLE IF NOT EXISTS '%@' ('%@' TEXT PRIMARY KEY, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT, '%@' TEXT,UNIQUE('%@' TEXT,'%@' TEXT,'%@' TEXT));", tableName, field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17, field18, field19, field20, field21, field22, field23, field24, field25, field26, field27, field28, field29, field30, field31, field32, field33, field34, field35, field36,field3,field4,field31];
if (sqlite3_exec(db, [sql UTF8String], NULL, NULL, &err) != SQLITE_OK) {
sqlite3_close(db);
NSAssert(0, @"Tabled failed to create.");
}
NSLog(@"Good job");
}
比尔以下方式发生火灾后插入查询..感谢您的答复..我正在使用SQLite3 ..它适用于我..我可以创建表并插入值。当我试图为表格创建一些约束时,问题就出现了。 – racharambola 2010-08-20 15:12:00
他说问题出现在函数声明中。唯一不是Objective-c函数声明中的有效关键字,使最后一部分搞砸了你的编译。这个问题不在你的sql语句中。这只会在运行时造成错误。 – 2010-08-20 18:48:54