2012-10-20 95 views
0

我已經使用SQLite創建在C數據庫。這裏是代碼:我的sqlite數據庫文件的位置在哪裏?

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

argv[1]是一個參數,其中包含數據庫的名稱。我認爲數據庫應該存儲在以.db結尾的文件中,但我無法找到該文件。

我在哪裏可以找到提到的文件(數據庫結構等文件...)?您使用的是Linux

+0

是什麼'的argv [1]'的內容是什麼? – quantum

回答

-1

我就可以在終端上使用「查找」命令,這樣

locate *.db 
/目錄

。您將獲得位置

+0

我認爲這個定位命令可能對你有所幫助..你也可以使用find命令來查找任何文件..無論如何你沒有提到你的操作系統 – Omkant

+1

由於[定位取決於其數據庫的新鮮度](http: //unixhelp.ed.ac.uk/CGI/man-cgi?locate+1)和updatedb的通常運行一夜之間,他將不得不等到明天找到他的檔案:-)與此同時,他可以用[發現]( http://unixhelp.ed.ac.uk/CGI/man-cgi?find) – fvu

+1

最好是引用參數('定位「* .db''),或者你可能找到錯誤的文件。例如,如果您在包含test.db的目錄中執行此操作,shell將發送以查找擴展名稱'test.db',並且您的「locate test.db」命令將找不到所有.db文件,但只有那些稱爲* exact *'test.db'。 – LSerni

1

無論您指定的路徑或程序在哪裏運行(例如,您的目錄爲C:\Users\User Name),都會創建該文件。

它不一定是.db擴展名,也就是說:您可以創建一個名爲您想要的文件。如果您需要查找它,也許您可​​以嘗試查找在給定時間間隔內創建的文件。

您的最佳選擇是始終指定完整路徑,並使用.sqlite或.db擴展名創建文件。

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的格式3 \ 000」(一個空結束的字符串)開始。

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

這將打印名稱包含字符串的所有文件&路徑,但該命令將花費一些時間...

0

sqlite3_open記錄爲創建數據庫,但SQLite的也不會真正創造文件直到您對數據庫進行任何更改。

創建一個表以確保文件將被創建。