我的sqlite数据库文件的位置在哪里?

时间:2012-10-20 17:33:28

标签: c sqlite

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

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

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

在哪里可以找到上述文件(带有数据库结构的文件等)?

4 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

sqlite3_open定义为

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

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

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

如果您真的需要该文件,并且它不在您期望的位置,也没有.db扩展名(因为您忘了指定它)并且您不记得您给出的名称是最后一种可能性:请参阅sqlite file format specification,sqlite文件始终以“SQLite format 3 \ 000”(以空字符结尾的字符串)开头。

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

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:-1)

我使用的是Linux,您可以在终端上使用“locate”命令,如下所示

locate *.db
<目录中的

。您将获得位置