Я довольно новичок в iPhone dev.запрос SQLite3 (iOs) не выполняется
У меня возникли проблемы с тем, чтобы это работало.
Это код, я хочу, чтобы выполнить:
[self openDB];
sqlite3_stmt *statement;
NSString *sql2 = [NSString stringWithFormat:@"INSERT INTO CheckList (CLName, DateAdd, Active, Costum, Percentage, UserId) VALUES ('ola232332332324', '2012-02-03', 1, 1, NULL, 1)"];
if(sqlite3_prepare_v2(db, [sql2 UTF8String], -1, &statement, NULL) == SQLITE_OK)
{
alert1 = [[UIAlertView alloc]
initWithTitle:@"Grats" message:@"The query was executed!" delegate:self cancelButtonTitle:@"Continue" otherButtonTitles: nil];
[alert1 show];
[alert1 release];
}
else {
NSAssert(0, @"Failed to execute");
}
sqlite3_finalize(statement);
И это код, я использую для вызова дб:
-(NSString *) filePath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
return [documentsDir stringByAppendingPathComponent:@"prosegur.sqlite"];
}
-(void) openDB {
sqlite3_open([[self filePath] UTF8String], &db);
if (sqlite3_open([[self filePath] UTF8String], &db) != SQLITE_OK){
NSAssert(0, @"Failed to open db");
}
}
Спасибо заранее,
Родольфо Матос
Редактировать: Пытается использовать FMDB, здесь код:
FMDatabase *database = [FMDatabase databaseWithPath:@"prosegur.sqlite"];
if([database open]){
NSLog(@"yes");
[database executeUpdate:@"INSERT INTO CheckList (CLName, DateAdd, Active, Costum, UserId) VALUES ('cenas', '2012-02-0', 1, 1, 1)"];}
else
{
NSLog(@"not");
}
Проходит при [открытие базы данных], но не выполняет запрос. Любое предложение? Спасибо!
EDIT 2: Уже сделал то, что было предложено, я начинаю думать, что он создает базу данных и выполняет внутри нее запрос, но поскольку он не существует ни одной таблицы, он игнорирует этот факт.
Вот обновленный код: NSArray * paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); NSString * docsPath = [[paths objectAtIndex: 0] сохранить]; NSString * path = [[docsPath stringByAppendingPathComponent: @ "prosegur.sqlite"] сохранить];
FMDatabase *database = [FMDatabase databaseWithPath:path];
[database open];
if([database open])
{
NSLog(@"yes");
[database executeUpdate:@"INSERT INTO CheckList (CLName) VALUES (?)", @"cenas"];
}
else
{
NSLog(@"no");
}
[database close];
Еще раз спасибо! :)
Ну, моя проблема в том, что он не получил правильную проверку sqlite3_prepare_v2 (..) == SQLITE_OK, он всегда переходит к другому.Я ничего не вижу с этим предложением. Спасибо –
Какой код ошибки _does_ он возвращается? –