어떤 이유로, 내 응용 프로그램은 문서 폴더에 데이터베이스를 만들지 않는 것 같습니다. 나는이 비디오 튜토리얼 (http://www.youtube.com/watch?v=bC3F8a4F_KE)을 따라 왔으며 (다운로드 한 소스 코드 (https://github.com/iffytheperfect1983/sqliteTutorial)를 가지고 있으며 시뮬레이터에서 완벽하게 실행되었다.)응용 프로그램 sqlite 데이터베이스를 만들지 않습니다
몇 가지 NSLog 문을 사용하여 문제를 찾아 냈습니다. 나는 "선언 된"문장까지 모든 코드가 문제없이 실행되었지만 나머지 NSLog 문장은 콘솔에 나타나지 않는다는 것을 깨달았습니다. 튜토리얼에서 내가 작성한 코드와 코드 사이에 끊임없이 이리저리 보였지만 해결책은 없었다.
다음은 코드입니다.
@interface ViewController() {
NSMutableArray *letterArray;
sqlite3 *letterDB;
NSString *dbPathString;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Set up
letterArray = [[NSMutableArray alloc]init];
[[self letterList] setDelegate:self];
[[self letterList] setDataSource:self];
// create or open database
[self createOpenDB];
// Display database
[self displayDB];
}
// Create/open database
- (void) createOpenDB {
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);
NSString *docPath = [path objectAtIndex:0];
dbPathString = [docPath stringByAppendingPathComponent:@"letters.db"];
char *error;
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:dbPathString]) {
const char *dbPath = [dbPathString UTF8String];
NSLog(@"Declared");
// create database here
if (sqlite3_open(dbPath, &lettersDB)==SQLITE_OK) {
NSLog(@"'If' statement is ok");
const char *sql_stmt = "CREATE TABLE IF NOT EXISTS LETTERS (ID INTEGER PRIMARY KEY AUTOINCREMENT, A TEXT, B TEXT, C TEXT, D TEXT, E TEXT, F TEXT, G TEXT)";
NSLog(@"Declared");
sqlite3_exec(lettersDB, sql_stmt, NULL, NULL, &error);
NSLog(@"Execution complete.");
sqlite3_close(lettersDB);
NSLog(@"Close complete.");
NSLog(@"Database creation successful.");
}
}
}
어떻게 해결할 수 있습니까? 미리 감사드립니다.
오류를 확인하십시오. 데이터베이스를 여는 데 사용되는'if' 문에'else'를 추가하십시오. 'sqlite_errmsg()'를 기록하십시오. – rmaddy
고맙습니다. 나는 그것을 명심해야한다. – chrisjr