我正在尝试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
数据库属性如下图所示:
我从MS SQL Server配置管理器(TCP端口是1433)中启用了TCP-IP,但问题仍然存在。
我还关闭了防病毒软件一段时间。
我正在寻求帮助:它还能做什么?我该如何验证用户?我怎么知道localhost:1433
是正确的服务器?
答案 0 :(得分:4)
我会按照以下步骤检查:
确保SQL Server 启动并运行。检查正在运行的服务,看看SQL Server service是否已启动。
我会检查SQL Server Configuration Manager以查看是否启用了TCP / IP通信。
我会检查防火墙设置。也许是SQL Server和客户端之间存在某些问题。
我会检查来自同一客户端的另一个应用程序是否可以连接到同一台服务器。然后我会检查连接字符串差异。
如果以上所有内容都正常播放,那么我将检查特定数据库上特定SQL Server的权限,以查找我尝试连接的帐户。允许每个人使用此数据库作为第一步,以检查它是否是帐户权限问题。
希望我帮忙!
答案 1 :(得分:2)
localhost
将永远是您运行Java的服务器 - 它正在说“与同一台机器通话”。
如果您的数据库托管在其他服务器上,则需要将该服务器名称放在配置中。
答案 2 :(得分:1)
请检查以下
单击“Sql Server网络配置”
单击“SQLExpress的协议”
双击TCP / IP并单击IP地址选项卡
直到看到IP ALL
确保在IPALL标题下的TCP Port下配置端口号1433。
如果未配置,请输入1433端口并单击“应用”。
您需要重新启动MS sql server并立即尝试,它应该可以正常工作。
希望这会解决它。