连接被拒绝:Java + Hibernate中的连接错误

时间:2014-01-14 13:14:39

标签: java sql sql-server hibernate

我正在尝试this tutorial当我进入hibernate部分时,我得到了这个错误:

java.sql.SQLException: Network error IOException: Connection refused: connect
    at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:436)
    at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184)
    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataS
ource.java:146)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(Wrap
perConnectionPoolDataSource.java:195)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(Wrap
perConnectionPoolDataSource.java:184)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourceP
oolManager.acquireResource(C3P0PooledConnectionPool.java:200)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.ja
va:1086)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAc
quiresWithinLockOnSuccess(BasicResourcePool.java:1073)
    at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.j
ava:44)
    at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(Basic
ResourcePool.java:1810)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolA
synchronousRunner.java:648)
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 net.sourceforge.jtds.jdbc.SharedSocket.createSocketForJDBC3(SharedSocket.jav
a:288)
    at net.sourceforge.jtds.jdbc.SharedSocket.<init>(SharedSocket.java:251)
    at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:331)
    ... 10 more

以下是访问数据库的hibernate.cfg.xml部分:

<!--Database connection settings-->
<property name="connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>
<property name="connection.url">jdbc:jtds:sqlserver://localhost:1433;databaseName=MyTut1db</property>
<property name="connection.username">sop1</property>
<property name="connection.password">myPW1</property>
<property name="dialect">org.hibernate.dialect.SQLServerDialect</property>

用户sop1在MS SQL Server 2012 Express Edition中创建为:

CREATE LOGIN sop1
    WITH PASSWORD = 'myPW1';
USE MyTut1db;
GO
CREATE USER sop1 FOR LOGIN sop1;
GO 

数据库属性如下图所示: db propr

我从MS SQL Server配置管理器(TCP端口是1433)中启用了TCP-IP,但问题仍然存在。

我还关闭了防病毒软件一段时间。

我正在寻求帮助:它还能做什么?我该如何验证用户?我怎么知道localhost:1433是正确的服务器?

3 个答案:

答案 0 :(得分:4)

我会按照以下步骤检查:

  • 确保SQL Server 启动并运行。检查正在运行的服务,看看SQL Server service是否已启动。

  • 我会检查SQL Server Configuration Manager以查看是否启用了TCP / IP通信。

  • 我会检查防火墙设置。也许是SQL Server和客户端之间存在某些问题。

  • 我会检查来自同一客户端的另一个应用程序是否可以连接到同一台服务器。然后我会检查连接字符串差异

  • 如果以上所有内容都正常播放,那么我将检查特定数据库上特定SQL Server的权限,以查找我尝试连接的帐户。允许每个人使用此数据库作为第一步,以检查它是否是帐户权限问题。

希望我帮忙!

答案 1 :(得分:2)

localhost将永远是您运行Java的服务器 - 它正在说“与同一台机器通话”。

如果您的数据库托管在其他服务器上,则需要将该服务器名称放在配置中。

答案 2 :(得分:1)

请检查以下

  1. 点击开始&gt;程序 - &gt; Microsoft Sql Server 2008 R2 - &gt;配置工具 - &gt; Sql Server配置管理器
  2. 单击“Sql Server网络配置”

  3. 单击“SQLExpress的协议”

  4. 双击TCP / IP并单击IP地址选项卡

  5. 直到看到IP ALL

  6. 为止
  7. 确保在IPALL标题下的TCP Port下配置端口号1433。

  8. 如果未配置,请输入1433端口并单击“应用”。

  9. 您需要重新启动MS sql server并立即尝试,它应该可以正常工作。

  10. 希望这会解决它。