[英]Hibernate MS SQL connection
我使用jar jtds-1.3.0.jar通過hibernate連接到MS SQL,下面是配置文件
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.url">jdbc:jtds:sqlserver://localhost/login</property>
<property name="connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>
<property name="connection.username">sa</property>
<property name="connection.password">user</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">update</property>
<!-- configuration pool via c3p0-->
<property name="c3p0.acquire_increment">5</property>
<property name="c3p0.idle_test_period">100</property> <!-- seconds -->
<property name="c3p0.max_size">20</property>
<property name="c3p0.max_statements">50</property>
<property name="c3p0.min_size">5</property>
<property name="c3p0.timeout">1800</property> <!-- seconds -->
<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<!--Basic user functionality-->
</session-factory>
但每次我運行我的項目時,由於網絡錯誤和連接被拒絕而給出錯誤。 為了仍然給出錯誤,我對此鏈接進行了評審。 下面是我的堆棧跟蹤
java.sql.SQLException: Network error IOException: Connection refused: connect
at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:434)
at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:183)
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:183)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:172)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:152)
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1074)
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1061)
at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1796)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:635) Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.sourceforge.jtds.jdbc.SharedSocket.createSocketForJDBC3(SharedSocket.java:300)
at net.sourceforge.jtds.jdbc.SharedSocket.<init>(SharedSocket.java:253)
at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:329)
下面是圖像 誰能告訴我哪里出錯了
您確定您的服務器正在偵聽端口1433嗎? 確認實際問題是使用Java(即您的配置)運行
telnet localhost 1433
如果你沒有得到答案,那么MS SQL很可能不會在1433上運行。有一個選項可以在MS SQL中使用動態端口,確保你沒有啟用它。
第一個障礙是了解MS SQL Express默認使用動態端口。 要從Java以TCP / IP方式連接,您需要手動配置靜態端口。
是portNumber
是可選的。 默認值為1433.如果使用default
,則不必在URL
指定port
,也不必指定其前面的“:”。
<property name="connection.pool_size">10</property>
它一次只允許一個連接。我猜你程序中的某些地方正在嘗試打開另一個會話。
看看吧
嘗試將網址更改為:
<property name="connection.url">jdbc:jtds:sqlserver://localhost:1443;DatabaseName=login</property>
將模式名稱與服務器地址分開。
我使用DBVisualizer連接到MS Sql,它顯示url配置的格式:
URL Format: jdbc:jtds:sqlserver://<server>:<port1443>;DatabaseName=<database>
我找到了解決問題的方法。 我通過參考這個討論將我的端口號從1433改為1434。 謝謝大家的時間
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.