我正在我的计算机上运行SQL Server Express 10.50.4000.0。我已在TCP/IP上启用,并确保端口设置为1433。我在1433的防火墙中添加了一个异常。服务器服务正在运行。我尝试过localhost和计算机名,但都给出了相同的错误。当我尝试localhost\SQLEXPRESS或[USER-PC]\r\nSQLEXPRESS时,我收到一个错误,说它找不到数据库。
String driverName = "net.sourceforge.jtds.jdbc.Driver";
Class.forName(driverName);
String serverName = "localhost";
String instanceName = "ALLEN-PC\SQLEXPRESS";
String serverPort = "1433";
String database = serverName +":" + serverPort+"/"+instanceName;
String url = "jdbc:jtds:sqlserver://" + database;
String username = "sa";
String password = "password";
connection = DriverManager.getConnection(url, username, password);
我收到错误:
Could not connect to the database Network error IOException: Connection refused: connect
没有额外的上下文可供调查。
- 请确保您的SQL Server Browser服务处于活动状态
- 转到AllProgram->SQL Server->配置工具->SQL Server配置管理器->SQL Server网络配置->选择您的服务器实例,右键单击TCP/IP,然后转到IPAddresses。将所有IP的端口号更改为1433。还要确保IP地址处于活动状态并已启用。保存并重新启动服务器
没有数据库服务器在本地主机:1433 上侦听
检查SQL Server浏览器服务是否正在运行
因此,也许使用ip地址而不是localhost会有所帮助。
您的连接字符串需要采用这种格式。在此处找到:http://msdn.microsoft.com/en-us/library/ms378428(v=sql.110).aspx
jdbc:jtds:sqlserver://<yourDBServerIPAddress>SQLEXPRESS:1433;databaseName=AdventureWorks;user=sa;password=*****;
打开Configuration Manager:开始->Microsoft SQL Server->配置工具->SQL Server配置管理器启用TCP/IP:从左侧树中选择:SQL Server网络配置->用于SQLEXPRESS的协议->TCP/IP右键单击并启用它。双击TCP/IP并单击"IP地址"选项卡添加TCP/IP端口:输入TCP端口值为1433,然后单击应用重新启动SQL Server:从左侧树中,选择:SQL Server服务->SQL Server(SQLEXPRESS)->右键单击并重新启动。
解决方案1:使用mssql-jdbc-9.4.0.jre8.jar代替使用jtds驱动程序
替换:
Class.forName("net.sourceforge.jtds.jdbc.Driver");
con = DriverManager.getConnection("jdbc:jtds:sqlserver://<IP>:port/<DatabaseName>",userid,password);
带有:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
DriverManager.getConnection("jdbc:jtds:sqlserver://<IP>:port/<DatabaseName>",userid,password);
解决方案2:
在连接字符串中添加ssl=request参数
con = DriverManager.getConnection("jdbc:jtds:sqlserver://<IP>:port/<DatabaseName>;ssl=request",userid,password);