Quelqu'un peut-il s'il vous plaît m'aider avec ce problème.Pour enregistrer les valeurs dans mon application iPhone, j'utilise SQLite3. J'ai beaucoup de valeurs en double dans ma base de données. Donc, pour éliminer cela, je prévois d'écrire une contrainte unique sur la table. Ma contrainte devrait être telle qu'un contact dont le prénom, le nom et le courriel sont les mêmes, je veux l'ignorer.Contrainte UNIQUE dans SQLite
Lorsque j'ai essayé d'implémenter la contrainte unique dans ma définition de table, cela me donne une erreur. J'ai essayé ceci en vérifiant la syntaxe dans sqlite.org. S'il vous plaît voir ma méthode de création de table et s'il vous plaît aidez-moi. Si vous avez une meilleure solution, faites-le moi savoir. Je serai heureux de vous fournir des informations si nécessaire.
J'ai dans ma base de données 36 champs où champ3 est le prénom, champ4 le nom de famille et champ31 est le courrier électronique. Aussi, s'il vous plaît laissez-moi savoir si nous devrions utiliser cette contrainte lors de l'insertion ou la sélection des lignes. J'attendrai vos réponses. Merci!
L'erreur dans cette méthode est: Estimé: avant (jeton J'ai essayé à bien des égards, mais cela n'a pas
-(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");
}
Bill .. merci pour la réponse .. J'utilise SQLite3..Il fonctionne bien pour moi .. Je peux créer la table et insérer les valeurs. Le problème vient quand j'essaye de créer des contraintes pour la table – racharambola
Il dit que le problème est dans votre déclaration de fonction, ce qu'elle est. Unique n'est pas un mot-clé valide dans les déclarations de fonction d'objectif-c, rendant cette dernière partie bousiller votre compilation. Le problème n'est pas dans votre instruction SQL. Cela causerait seulement une erreur pendant l'exécution. –