我正在使用JDBC驅動程序與SQlite連接。我想從SQLite命令提示符中檢查在數據庫引擎中打開了多少個連接。任何人都可以告訴我我該怎麼做?Sqlite連接列表
回答
在java.sql
包中沒有API可以做到這一點。您必須在您身邊這樣做,例如使用Singleton
類來讓您創建連接並跟蹤此類創建連接的數量。
PS:當然,這隻能算在底層運行的JVM實例
謝謝您的回覆。但我想知道如何使用sqlite3從命令提示符chk連接的數量 – newCommer
SQLite連接數是embedded database - 訪問數據庫文件基本上都有自己的數據庫引擎的每個過程。獨立引擎之間的唯一交互是通過底層操作系統的文件鎖定工具,這可以確保在嘗試更新數據庫文件時,各種進程不會互相踩在一起。
由於這個設計,就SQLite而言,沒有單一的控制點。 sqlite3
shell實用程序本質上包含SQLite數據庫引擎本身的副本,這就是它如何處理DB文件 - 它不會「連接」到另一個應用程序。事實上,SQLite文檔中的術語「連接」只是由於其對數據庫工程師的熟悉而被錯誤地使用,實際上它只不過是打開一兩個文件而已。
因此,sqlite3
實用程序無法知道任何其他應用程序正在做什麼,除了偶爾遇到另一個進程正在修改數據庫時鎖定的文件。
如果您想知道您的應用程序在底層數據庫中所做的工作,您必須在基本SQLite3庫中查找/編寫一個包裝,以執行您所需的任何其他簿記 - 可能會提供一個控制界面。基本SQLite庫本身沒有任何這樣的設施,因爲它們被認爲超出了它的範圍。
包裝方法的問題是,您的應用程序仍然不知道任何其他進程正在做什麼。您可能可以讓所有使用包裝程序的進程在中央訪問點(文件/網絡服務/ ...)收集數據,但僅此而已 - 任何其他進程(例如sqlite3
shell)仍然可以訪問數據庫直接文件。
但是,如果您只需知道數據庫文件的「連接」數量,則可能存在(絕對不可移植的)方式:每個「連接」都會導致數據庫文件被打開,因此您可能能夠使用特定於平臺的實用程序來查明哪些進程在每個時刻都打開了該文件。例如,在Linux上,您可以使用lsof
實用程序。順便說一下,如果您從應用程序的單個實例中多次打開同一個DB文件,則可能需要重新考慮您的體系結構 - 與傳統的DB服務器相反,打開多個「連接」到單個SQLite數據庫文件沒有性能優勢,甚至可能導致應用程序死鎖,如果你不小心。
- 1. SQLite外連接列過濾
- 2. 用於連接表的SQLite
- 3. android Sqlite連接
- 4. SQLite連接池
- 5. 連接到SQLite
- 6. SQLite連接問題
- 7. PHP PDO SQLite連接
- 8. 在Android上的SQLite簡單連接表
- 9. SQLite數據庫安卓 - 連接表
- 10. 使用sqlite在xamarin中連接表格
- 11. 如何在SQLite中連接三個表?
- 12. SQLite數據庫中的連接表
- 13. 連接兩個表中的SQLite
- 14. SQLite數據庫連接:表不存在
- 15. 連接splatted列表
- 16. 如何連接跨多個表的sqlite列的選擇?
- 17. 連接Python鏈接列表
- 18. SQLite的連接或SQLite的異步連接
- 19. 連接表(Oracle)的無連接列
- 20. 從LINQ連接表中連接列
- 21. Python如何使用連接函數連接列表列表
- 22. android studio中的sqlite連接sqlite
- 23. 連接列表到單個列表中
- 24. PHP的PDO的SQLITE - 連接
- 25. Symfony2無法連接到sqlite
- 26. 連接到SQLite數據庫
- 27. Qt:如何連接到SQLite?
- 28. SQLite和iPad連接沒做
- 29. SQLite的連接 - 注射
- 30. SQLite的連接策略
你使用zentus SQLiteJDBC嗎? http://www.zentus.com/sqlitejdbc/ – Robert