iOS 앱의 SQLite 데이터베이스에 일부 데이터를 저장하려고합니다. 나는 아래의 방법으로이 일을 해요 :SQLite 데이터베이스가 올바르게 작동하지 않습니다.
NSString *query = [NSString stringWithFormat:@"INSERT INTO categories VALUES ('%@', '%@', '%@', null, %d)", categoryName, @"test", @"test", 33];
NSLog(@"Query is: %@", query);
[[AFSQLManager sharedManager]performQuery:query withBlock:^(NSArray *row, NSError *error, BOOL finished) {
if (!error) {
if (!finished) {
NSLog(@"No success");
} else {
NSLog(@"Succeeded");
}
} else {
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"Oops" message:error.description delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
}
}];
그리고 이것은 viewDidLoad
에서 실행되는 데이터베이스 여는 방법 : 당신이 볼 수 있듯이, 내가 AFSQLManager을 사용하고
[[AFSQLManager sharedManager]openLocalDatabaseWithName:@"test.sqlite" andStatusBlock:^(BOOL success, NSError *error) {
if (error) {
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"Oops" message:error.description delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
}
}];
을 쿼리를 실행하기 위해 (여기서 찾을 수 있습니다 https://github.com/AlvaroFranco/AFSQLManager). 위의 방법은 '성공'을 기록하지만 데이터베이스에서 일부 데이터를 가져올 때 결과가 없습니다. 내 최고의 추측은 SQLite
데이터베이스에 문제가 있다는 것입니다 ... 내가 뭘 잘못하고 있는지 아는 사람이 있습니까?
제쳐두고'stringWithFormat'으로 SQL을 빌드하면 안됩니다. 당신은 SQL에'? '자리 표시자를 사용하고 그 자리 표시 자에 값을 바인딩해야합니다. 나는 AFSQLManager가 그렇게 할 수 없다고 생각한다. 그래서 당신은 그 기능을 제공하는 [FMDB] (https://github.com/ccgus/fmdb)와 같은 라이브러리를 사용할 것을 고려할 것이다. – Rob
10 번 중 9 번 증상은 데이터베이스 파일이 실제로 있어야하는 위치 또는 생각한 위치에 있지 않기 때문입니다. –