Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 应用程序未创建sqlite数据库_Objective C_Sqlite_Ios6.1 - Fatal编程技术网

Objective c 应用程序未创建sqlite数据库

Objective c 应用程序未创建sqlite数据库,objective-c,sqlite,ios6.1,Objective C,Sqlite,Ios6.1,由于某些原因,我的应用程序似乎没有在Documents文件夹中创建数据库。我一直在关注这个视频教程()(它还有我下载的源代码(),它在模拟器上运行得非常完美) 我使用了一些NSLog语句试图找出问题所在。我意识到,虽然“声明”语句之前的所有代码都运行正常,但其余的NSLog语句没有显示在控制台中。我不知疲倦地在我编写的代码和教程中的代码之间来回寻找,但没有找到解决方案 这是代码 @interface ViewController () { NSMutableArray *letterArray

由于某些原因,我的应用程序似乎没有在Documents文件夹中创建数据库。我一直在关注这个视频教程()(它还有我下载的源代码(),它在模拟器上运行得非常完美)

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

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

您使用的是
NSDocumentationDirectory
,而您应该使用
NSDocumentDirectory
目录

更改此项:

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

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

遇到此类问题时,请检查错误。在用于打开数据库的
if
语句中添加
else
。日志
sqlite\u errmsg()
。谢谢。我一定要记住这一点。我怎么会错过呢?我真是个白痴。谢谢你的帮助。如果你检查了错误,就不会错过了。(包括“未找到”返回的零)你不是白痴。我已经做了很多了。这是一个常见的错误,Xcode中的自动完成并没有帮助。