Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.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
C 为什么我的sqlite3文件从未被创建?_C_Xcode_Sqlite - Fatal编程技术网

C 为什么我的sqlite3文件从未被创建?

C 为什么我的sqlite3文件从未被创建?,c,xcode,sqlite,C,Xcode,Sqlite,我正在尝试在Xcode中创建sqlite3数据库 以下是我正在使用的代码: #include <stdlib.h> #include <stdio.h> #include <sqlite3.h> static int callback(void *NotUsed, int argc, char **argv, char **azColName){ printf("called here"); return 0; } int main(int

我正在尝试在Xcode中创建sqlite3数据库

以下是我正在使用的代码:

#include <stdlib.h>
#include <stdio.h>
#include <sqlite3.h>

static int callback(void *NotUsed, int argc, char **argv, char **azColName){
    printf("called here");
    return 0;
}

int main(int argc, const char * argv[]) {
    sqlite3 *db;
    char *zErrMsg = 0;
    int result = sqlite3_open("noodle.sqlite3", &db);

    if (result != SQLITE_OK) {
        printf("did not work\n");
        exit(0);
    }

    char *sql = "CREATE TABLE TEST (ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL);";
    result = sqlite3_exec(db, sql, callback, 0, &zErrMsg);

    if (result != SQLITE_OK) {
        printf("heya");
        exit(0);
    }

    char *sql2 = "INSERT INTO TEST VALUES (3, 'NEATO');";
    result = sqlite3_exec(db, sql2, callback, 0, &zErrMsg);

    if (result != SQLITE_OK) {
        printf("dangit");
        exit(0);
    }

    const char* data = "Callback function called";
    char *sql3 = "SELECT * FROM TEST;";
    result = sqlite3_exec(db, sql3, callback, (void *)data, &zErrMsg);

    return 0;
}
我也跟着。但是我的主.c文件所在的目录从未看到创建面条.sqlite3文件


我做错了什么?我认为sqlite3_open会在数据库不存在的情况下创建数据库。

除非您看到错误消息,否则它可能是在创建文件,但可能不是在您要查找的位置

因为您没有指定文件应该放在哪个文件夹中,所以文件通常位于当前工作目录中。如果您从终端窗口运行它,它将是您运行它的任何文件夹。如果您是从Xcode运行此程序,则当前工作文件夹可能是放置可执行产品的文件夹,您可以通过右键单击产品并选择Show in Finder来识别该文件夹:

我还看到它在Documents文件夹中创建文件

最重要的是,如果你没有看到这个文件,用Finder的搜索功能搜索你的Mac电脑,然后寻找名字:面条,你应该这样找到它

坦率地说,我会消除这个过程中的模糊性,并明确告诉它将文件保存在documents文件夹中:

NSString *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
NSString *path = [documents stringByAppendingPathComponent:@"noodle.sqlite3"];

sqlite3 *db;
char *zErrMsg = 0;
int result = sqlite3_open([path UTF8String], &db);