应用程序没有创建一个sqlite数据库

时间:2013-08-27 15:50:36

标签: objective-c sqlite ios6.1

出于某种原因,我的应用似乎没有在Documents文件夹中创建数据库。我一直在关注这个视频教程(http://www.youtube.com/watch?v=bC3F8a4F_KE)(它还有我下载的源代码(https://github.com/iffytheperfect1983/sqliteTutorial),它完全在模拟器上运行。)

我使用了一些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.");
    }
}
}

我该如何解决这个问题?提前谢谢。

1 个答案:

答案 0 :(得分:1)

当您使用NSDocumentationDirectory目录时,您正在使用NSDocumentDirectory

改变这个:

NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);

对此:

NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);