2012-08-17 92 views
3

我正在使用sqlite來存儲我的數據。我有兩個數據庫。在我的應用程序中,每次發出新的請求時,都會將第一個數據庫附加到第二個數據庫。問題是,如果兩個請求到來,它顯示數據庫已經在使用(它試圖附加兩次相同的別名'數據庫')。我想知道是否有任何方法檢查數據庫是否附加?如何檢查sqlite數據庫是否附加?

+0

請更新您使用:) – 2012-08-17 07:23:44

+0

請你展示一些代碼語言你的問題/標籤,讓我們知道你在做什麼? – 2012-08-17 07:44:56

+0

我正在執行附加數據庫語句(附加數據庫expr到dbname「)來附加數據庫。問題是第二次當我執行這個查詢時我收到錯誤」db is already in use「。所以,我想檢查數據庫已經連接或不連接,如果連接,則返回,否則連接數據庫 – Sandy 2012-08-17 07:52:40

回答

4
PRAGMA database_list; 

輸出一個結果集,其中包含可用數據庫的完整列表。第一列是數據庫名稱,第二列是數據庫文件(如果不與文件關聯,則爲空)。主數據庫始終命名爲main,臨時數據庫始終爲temp

sqlite> attach "foo.db" as foo; 
sqlite> pragma database_list; 
0|main| 
2|foo|/Users/me/tmp/foo.db 
2

我假設你正在重複使用與數據庫相同的連接來處理多個請求。由於連接對象的數據庫爲attached,因此連接失敗的第二個或進一步的請求具有相同的連接。我認爲我的解決方案是在建立新連接後立即連接數據庫,而不是每次收到請求。