为什么我的 sqlite3 文件从未被创建?
Why is my sqlite3 file never being created?
我正在尝试在 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;
}
我正在关注 this tutorial。但是我的 main.c
文件所在的目录从未创建过 noodle.sqlite3
文件。
我做错了什么?我认为 sqlite3_open
如果数据库不存在则创建数据库。
除非您看到错误消息,否则它可能 正在 创建文件,但可能不在您要查找的位置。
因为你没有指定文件应该放在哪个文件夹,文件一般会在"current working directory"。如果您从终端 window 运行 它,那将是您 运行 它来自的任何文件夹。如果您 运行 从 Xcode 下载此文件,"current working folder" 可能是放置可执行文件的文件夹,您可以通过右键单击 "product" 并选择 "Show in Finder":
。
我也看到它在 Documents 文件夹中创建文件。
最重要的是,如果您没有看到该文件,请使用 Finder 的搜索功能搜索您的 Mac 并查找 "name:noodle",这样您应该会找到它。
F运行kly,我会消除流程中的歧义,并明确告诉它将文件保存在文档文件夹中:
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);
我正在尝试在 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;
}
我正在关注 this tutorial。但是我的 main.c
文件所在的目录从未创建过 noodle.sqlite3
文件。
我做错了什么?我认为 sqlite3_open
如果数据库不存在则创建数据库。
除非您看到错误消息,否则它可能 正在 创建文件,但可能不在您要查找的位置。
因为你没有指定文件应该放在哪个文件夹,文件一般会在"current working directory"。如果您从终端 window 运行 它,那将是您 运行 它来自的任何文件夹。如果您 运行 从 Xcode 下载此文件,"current working folder" 可能是放置可执行文件的文件夹,您可以通过右键单击 "product" 并选择 "Show in Finder":
我也看到它在 Documents 文件夹中创建文件。
最重要的是,如果您没有看到该文件,请使用 Finder 的搜索功能搜索您的 Mac 并查找 "name:noodle",这样您应该会找到它。
F运行kly,我会消除流程中的歧义,并明确告诉它将文件保存在文档文件夹中:
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);