2011-08-13 68 views
3

我在內存數據庫中使用HSQL作爲我的應用程序的測試目的,並使用SQL Server作爲主數據庫,現在當我在做測試時,HSQL數據庫正在填充與我在SQL Server中具有的相同數據,現在我試圖測試從數據庫檢索數據的特定服務(如果直接服務運行,它將查詢MS服務器,或者如果從測試中調用,它將查詢HSQL數據庫)內存數據庫的概念以及如何查看我的數據是否正在HSQL DB中填充?

我能夠在運行查詢時看到來自MS服務器的數據,但如果在其上運行相同的查詢,HSQL Db不會返回任何數據。我的預感是HSQL DB沒有被填充數據,有沒有一種方法可以讓我查看HSQL DB中的表格以及HSQLDB中的數據填充方式,我希望看到數據和i沒有任何gui客戶端來查看HSQL數據庫是如何填充的以及哪些數據放在哪個表中。我們有沒有一個好的客戶端,我如何使用它連接到HSQL數據庫,以及我怎樣才能真正看到在HSQL Cover下發生的事情,而不是假設HSQL正在用我們在SQL Server中的東西正確填充?

任何建議會很長的路?

+2

看這裏:http://stackoverflow.com/questions/4990864/best-sql-browser-for-hsqldb – Perception

+0

@Perception:我無法看到我的數據庫,我正確提供所有連接細節。 – Rachel

+0

您是否驗證過您確實能夠寫入數據庫,然後從中讀回? – Perception

回答

10

這裏我想補充的

如何在服務器模式下運行的內存只有HSQLDB的詳細步驟?

1)下載最新版本的hsqldb-2.2.5.zip

2)將它解壓縮,打開bin文件夾

3)修改runServer.bat像 CD .. \數據 @java -classpath .. /lib/hsqldb.jar org.hsqldb.server.Server -database.0 mem:aname -dbname.0 aliasdb 並單擊runServer.bat啓動服務器

4)運行runManager.bat,選擇服務器類型,輸入url jdbc:hsqldb:hsql :// localhost/aliasdb,connect,創建一些測試表和測試數據

5)再次運行runManager.bat啓動另一個客戶端,選擇服務器類型,輸入url jdbc:hsqldb:hsql:// localhost/aliasdb,connect,你會找到你創建的數據。

+1

+1分步指南 – fredt

2

使用HSQLDB進行開發的最佳方式是運行一個服務器實例(可將數據純粹存儲在內存中)。服務器打開時,您可以連接多個客戶端(包括GUI)來測試和瀏覽數據。

URL格式jdbc:hsqldb:hsql:// localhost用於訪問服務器,而服務器本身使用jdbc:hsqldb:mem:test作爲其內部內存數據庫。必須將服務器啓動先用這樣的命令:

java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 mem:test 
+0

我輸入url指向本地主機在url輸入框但沒有發生,不知道爲什麼? – Rachel

+0

現在正在發生套接字創建錯誤。 – Rachel

+0

您應該先啓動服務器。請按照HSQLDB指南中的示例http://hsqldb.org/doc/2.0/guide/running-chapt.html#running_modes-sect – fredt

0

您可以使用Derby在內存數據庫和H2內存數據庫。他們很好,但H2有更好的表現。 H2有一個Web控制檯GUI,Derby有eclipse插件GUI。你可以嘗試一下。我在項目中使用過它們。 H2數據庫在SO中有一個標籤,其作者將在SO中支持你。我認爲fredit適合使用服務器模式而不是嵌入模式。但他的網址似乎並不正確。至少它應該使用mem。對於Derby,url是jdbc:derby:// myhost:1527/memory:myDB; create = true。這是H2 jdbc的實例url:h2:tcp:// localhost/mem:db1。

您需要使用服務器模式,以便客戶端可以從網絡連接到它。 你需要注意的一件事是,在內存模式下,因爲它在內存中,所以當你的java進程結束時,JVM不在那裏,DB中的數據也會丟失。但是爲了測試,這成爲一個優勢。您無需清除測試數據。

H2具有很好的測試用途。它具有SQL支持,可以運行IBM DB2,Apache Derby,HSQLDB,MS SQL Server,MySQL,Oracle和PostgreSQL的兼容性SQL。這意味着即使你在MS SQL Server中使用特殊的SQL,也可以在H2中獲得相同的結果。我相信你會喜歡它。

鏈接

我知道HSQL在內存模式,但我沒有用它。

祝你好運。

UPDATE

我相信,如果你不是在你的測試用例編寫查詢,它會返回結果。我在測試案例中做了很多。即使在嵌入模式下,只要您在測試用例中創建了JDBC連接即可。如果您覺得這很不方便,甚至可以將數據輸出轉儲到文件中。但是您必須將數據加載到測試用例中的HSQL中,您可以使用BeforeClass來完成它。如果您不能這樣做,則必須使用服務器模式。

的HSQL似乎是在JDBC URL服務器內存模式

詳情參看 http://hsqldb.org/doc/guide/guide.html#N108D2連接

你必須處理一些服務器CONFIGS有點不同。

@Rachel,I終於找到一個鏈接來幫助您在內存模式下設置服務器模式。 看看這個。這有點複雜。

注 「在服務器模式下運行的唯一內存HSQLDB」

第二個鏈接沒有詳細說明如何正確連接。 因此,請嘗試第一個。

+0

感謝Clark的建議,我們的項目使用的是HSQL數據庫,所以我需要找到一種方法,在測試在調試模式下運行時,我可以繼續並找到可瀏覽的選項。 – Rachel

+0

Rachel嘗試此連接c = DriverManager.getConnection(「jdbc:hsqldb:mem:aname」,「sa」,「」); –

+0

我相信這個SO主題,它有一些線索http://stackoverflow.com/questions/199598/100-in-memory-hsql-database你不需要瀏覽它。只需運行查詢使用JDBC。 –

相關問題