0

我使用 sqlite 在 C 中创建了一个数据库。这是代码:

int x = sqlite3_open(argv[1], &db);

argv[1]是一个包含数据库名称的参数。我认为数据库应该存储在以 .db 结尾的文件中,但我找不到该文件。

我在哪里可以找到提到的文件(具有数据库结构的文件等......)?

4

4 回答 4

1

该文件将在您指定的路径或程序运行的任何位置(例如您的C:\Users\User Name目录)创建。

它不一定有.db扩展名,即:您可以创建一个任意命名的文件。如果您需要找到它,也许您可​​以尝试查找在给定时间间隔内创建的文件。

您最好的选择是始终指定完整路径,并创建带有 .sqlite 或 .db 扩展名的文件。

于 2012-10-20T17:38:28.757 回答
1

sqlite3_open 定义为

int sqlite3_open(
   const char *filename,   /* Database filename (UTF-8) */
   sqlite3 **ppDb          /* OUT: SQLite db handle */
);

所以无论你在第一个参数中输入的是什么,都会调用数据库。.db 后缀不会自动添加。

至于存储文件的目录,如果您在 argv 1中指定了绝对路径,则该文件将存储在该目录中,否则它应该在当前工作目录中。

如果您确实需要该文件并且它不在您期望的位置,也没有 .db 扩展名(因为您忘记指定它)并且您不记得您提供的名称,还有最后一种可能性:请参阅sqlite 文件格式规范,sqlite 文件始终以“SQLite 格式 3\000”(以空字符结尾的字符串)开头。

find / -exec grep -l "SQLite format 3" {} \;

这将打印包含该字符串的所有文件的名称和路径,但该命令将需要一些时间......

于 2012-10-20T17:39:07.813 回答
0

sqlite3_open记录为创建数据库,但在您对数据库进行任何更改之前,SQLite 不会实际创建文件。

创建一个表以确保将创建该文件。

于 2012-10-20T19:52:31.460 回答
-1

我您使用的是 Linux,您可以像这样在终端上使用“定位”命令

locate *.db

在 / 目录中。你会得到位置

于 2012-10-20T17:37:33.490 回答