Создавая приложение для Iphone, я использовал INSERT QUERY для разных баз данных.Но когда я попытался вставить данные в одну и ту же базу данных, я получил ошибку подтверждения.Я читаю два разных XML-URL и пытаюсь создать, а затем вставить данные в таблицу так, как они читаются при создании БД.У кого-нибудь есть идеи, почему это показывает мне ошибку?У меня есть следующий код, который вставляет в БД с использованием SQLITE:
-(void) insertProductTable:(NSMutableArray *)Dict{
[Dict retain];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *dbPath = [documentsDirectory stringByAppendingPathComponent:@"product.sql"];
NSInteger i;
if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) {
const char * insert_product_sql = "INSERT OR REPLACE INTO test(ID,KEY ) VALUES (?,?)" ;
if(sqlite3_prepare_v2(database, insert_product_sql, -1, &product_statement, nil) != SQLITE_OK){
NSAssert1(0, @"Error: failed to prepare insert_product_sql: '%s'.", sqlite3_errmsg(database));
}
for (i = 0; i < [self.array count]; i++) {
sqlite3_bind_text(product_statement, 1, [[Dict valueForKey:@"ID"] UTF8String] ,-1, SQLITE_TRANSIENT);
sqlite3_bind_text(product_statement, 2, [[Dict valueForKey:@"KEY"] UTF8String] ,-1, SQLITE_TRANSIENT);
}
if (sqlite3_step(product_statement) != SQLITE_DONE) {
NSAssert(0,@"Error updating table");
}
[Dict release]; Dict = 0;
sqlite3_finalize(product_statement);
sqlite3_close(database);
}
}
У меня есть следующий метод, который выполняет другую функцию вставки, но другую таблицу, но на этом этапе он не позволяет мне вставить бросая меня Assertion Failure,Оба метода вызываются разными классами.
-(void) insertTable:(NSMutableArray *)Dict{
[Dict retain];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *dbPath = [documentsDirectory stringByAppendingPathComponent:@"product.sql"];
NSInteger i;
if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) {
const char * insert_sql = "INSERT OR REPLACE INTO test1(Term,Value ) VALUES (?,?)" ;
if(sqlite3_prepare_v2(database, insert_sql, -1, &product_statement, nil) != SQLITE_OK){
NSAssert1(0, @"Error: failed to prepare insert_sql: '%s'.", sqlite3_errmsg(database));
}
for (i = 0; i < [self.arayList count]; i++) {
sqlite3_bind_text(product_statement, 1, [[Dict valueForKey:@"TERM"] UTF8String] ,-1, SQLITE_TRANSIENT);
sqlite3_bind_text(product_statement, 2, [[Dict valueForKey:@"VALUE"] UTF8String] ,-1, SQLITE_TRANSIENT);
}
if (sqlite3_step(product_statement) != SQLITE_DONE) {
NSAssert(0,@"Error updating table");
}
[Dict release]; Dict = 0;
sqlite3_finalize(product_statement);
sqlite3_close(database);
}
}