2012-01-16 93 views
9

我有一個HSQL數據庫,Spring爲我自動創建:如何連接到Spring使用jdbc:embedded-database時創建的HSQL?

<jdbc:embedded-database id="dataSource" type="HSQL"> 
    <jdbc:script location="classpath:scheme.sql"/
</jdbc:embedded-database> 

,現在我想連接到這個數據庫中。我的問題是如何做到這一點,因爲我不知道我應該使用哪個地址。

+1

「連接到」是什麼意思?你想在Spring bean中使用它,還是想要連接外部數據庫瀏覽器? – 2012-01-16 14:12:47

+0

@ peter-gwiazda我的意思是如何使用外部數據庫瀏覽器連接到它。 – 2012-01-17 02:04:39

+0

在服務器模式下運行HSQLDB。你也可以檢查H2數據庫。 – 2012-01-17 10:38:11

回答

17

這個嵌入式HSQL數據庫是全內存和進程內的,因此只能從Spring Java進程訪問。如果您還想從其他工具訪問數據庫,例如使用數據庫管理器檢查內容,則可以使用全內存實例啓動HSQLDB服務器,然後使用Spring和其他工具連接到服務器。

這是包括在HSQLDB指南http://hsqldb.org/doc/2.0/guide/listeners-chapt.html

服務器開始使用此命令:

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

你需要創建一個用戶名「SA」一個Spring數據源和密碼「」。數據庫驅動程序和URL(從同一臺機器)來配置Spring數據來源是:

org.hsqldb.jdbcDriver 
jdbc:hsqldb:hsql://localhost/test 
+0

當我運行'java -cp〜/ .m2/repository/org/hsqldb/hsqldb/2.0.0/hsqldb-2.0.0.jar org.hsqldb.util.DatabaseManagerSwing'並使用'jdbc:hsqldb:hsql:// localhost/test'我有錯誤:'java.sql.SQLTransientConnectionException:java.net.ConnextException:連接被拒絕' – 2012-01-17 03:00:45

+0

java -cp ../lib/hsqldb.jar org .hsqldb.Server ...運行時沒有錯誤? – 2012-01-17 10:46:15

+0

@ peter-gwiazda當我手動運行服務器時,可以使用提供的命令連接到服務器。但在我的情況下,春季啓動服務器,所以我問如何連接到春季運行的HSQL .. – 2012-01-18 02:15:33

2

嵌入式數據庫是在內存數據庫和Spring支持HSQL,H2和德比。你可以去他們各自的網站獲取連接細節。

對於H2,參見here。 HSQL請參閱herehere

據我瞭解,在

<jdbc:embedded-database id="dataSource" type="HSQL"> 
    <jdbc:script location="classpath:scheme.sql"/
</jdbc:embedded-database> 

使用的內存數據庫,所以是不是外部訪問。您可以在同一個VM和同一個類加載器中訪問它。

+0

我們可以使用XML文件加載到DB – VinayVeluri 2013-02-05 10:22:46

0

你可以像這樣

final ApplicationContext ctx = new ClassPathXmlApplicationContext("dao-context.xml"); 
final DataSource dataSource = (DataSource)ctx.getBean("dataSource"); 
final Connection conn = dataSource.getConnection(); 
+4

如果你解釋你發佈的代碼,它會更好。 – 2012-10-22 00:01:14

1

您可以連接到嵌入式數據庫以正常的方式, (SQL Developer,SQL Explorer等);我使用我的調試器來查看我使用Spring創建的嵌入式數據庫bean中的URL屬性,在您的案例dataSource中。我認爲你的網址應該是沿着jdbc:hsqldb:mem:dataSource的行。

+0

它絕對不會工作,因爲內存數據庫只能在一個JVM進程中使用。 – 2015-06-22 12:20:32

0

對於一些人來說足夠的解決辦法是使用H2控制檯 - 如下所述:

spring boot default H2 jdbc connection (and H2 console)

您必須只記得設置HSQLDB驅動程序需要的地方。這樣數據庫就不必單獨啓動。您也不需要安裝任何額外的軟件來瀏覽它。