帮我创build一个jTDS连接string

我的SQL服务器实例名称是MYPC \ SQLEXPRESS,我试图创build一个jTDS连接string连接到数据库'博客'。 任何人都可以帮我做到这一点?

我试图这样做:

DriverManager.getConnection("jdbc:jtds:sqlserver://127.0.0.1:1433/Blog", "user", "password"); 

我得到这个:

  java.sql.SQLException: Network error IOException: Connection refused: connect at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:395) at net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3.java:50) at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at SqlConnection.Connect(SqlConnection.java:19) at main.main(main.java:11) Caused by: java.net.ConnectException: Connection refused: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(Unknown Source) at java.net.PlainSocketImpl.connectToAddress(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.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.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:305) at net.sourceforge.jtds.jdbc.SharedSocket.<init>(SharedSocket.java:255) at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:323) ... 6 more 

正如jTDS Frequenlty提问中所详述的,jTDS的URL格式是:

 jdbc:jtds:<server_type>://<server>[:<port>][/<database>][;<property>=<value>[;...]] 

因此,要连接到由运行在MYPC上的MS SQL Server托pipe的名为“Blog”的数据库,最终可能会出现如下所示的结果:

 jdbc:jtds:sqlserver://MYPC:1433/Blog;instance=SQLEXPRESS;user=sa;password=s3cr3t 

或者,如果您更喜欢使用getConnection(url, "sa", "s3cr3t")

 jdbc:jtds:sqlserver://MYPC:1433/Blog;instance=SQLEXPRESS 

编辑:关于您的Connection refused错误,仔细检查您在端口1433运行SQL Server,该服务正在运行,并且您没有阻止传入连接的防火墙。

真的,真的要检查你的本地SQLEXPRESS实例中是否启用了TCP / IP协议。

请按照以下步骤确保:

  • 打开“开始菜单\程序\ Microsoft SQL Server 2012 \configuration工具\”中的“ Sql Serverconfigurationpipe理器
  • 展开“SQL Servernetworkingconfiguration”
  • 进入“SQLEXPRESS协议”
  • 启用TCP / IP

如果您有任何问题,请查看此博客文章以了解详细信息,因为它包含屏幕截图和更多信息。

另外检查“SQL Server Browser”窗口服务是否被激活并正在运行

  • 转到控制面板 – >pipe理工具 – >服务
  • 打开“SQL Server Browser”服务并启用它(使其成为手动或自动,取决于您的需要)
  • 启动它。

而已。

在我安装完全新的本地SQLExpress之后,我所要做的就是启用TCP / IP并启动SQL Server Browser服务。

在我用来testingSQLEXPRESS本地连接的代码下面。 当然,您应该根据需要更改IP,数据库名称和用户/密码。

 import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; public class JtdsSqlExpressInstanceConnect { public static void main(String[] args) throws SQLException { Connection conn = null; ResultSet rs = null; String url = "jdbc:jtds:sqlserver://127.0.0.1;instance=SQLEXPRESS;DatabaseName=master"; String driver = "net.sourceforge.jtds.jdbc.Driver"; String userName = "user"; String password = "password"; try { Class.forName(driver); conn = DriverManager.getConnection(url, userName, password); System.out.println("Connected to the database!!! Getting table list..."); DatabaseMetaData dbm = conn.getMetaData(); rs = dbm.getTables(null, null, "%", new String[] { "TABLE" }); while (rs.next()) { System.out.println(rs.getString("TABLE_NAME")); } } catch (Exception e) { e.printStackTrace(); } finally { conn.close(); rs.close(); } } } 

如果您使用Maven,请将其添加到您的pom.xml中:

 <dependency> <groupId>net.sourceforge.jtds</groupId> <artifactId>jtds</artifactId> <version>1.2.4</version> </dependency> 

jdbc:jtds:sqlserver://xxxx/databasexxxxreplace为您的SQL Server计算机的IP或主机名。

jdbc:jtds:sqlserver://MYPC/Blog;instance=SQLEXPRESS

要么

jdbc:jtds:sqlserver://MYPC:1433/Blog;instance=SQLEXPRESS

如果您想要在连接string中设置用户名和密码,而不是单独针对连接对象:

jdbc:jtds:sqlserver://MYPC/Blog;instance=SQLEXPRESS;user=foo;password=bar

(更新我不正确的信息并添加对实例语法的引用)

在黑暗中拍摄,但从您的错误消息的外观,似乎是不是在端口1433上运行sqlserver实例,或者有东西阻止对该端口的请求

SQLServer通过端口1433运行默认实例。如果将端口指定为端口1433,SQLServer将仅查找默认实例。 默认实例的名称是在安装时创build的,通常是SQLEXPRESSxxx_xx_ENU

实例名称也与在Program Files – > Microsoft SQL Server中创build的文件夹名称相匹配。 所以,如果你看那里,看到一个名为SQLEXPRESSxxx_xx_ENU的文件夹,它是默认的实例。

名为MSSQL12.myInstanceName (对于SQLServer 2012)的文件夹在SQL Server中被命名为实例,不能通过端口1433进行访问。

因此,如果您的程序正在访问数据库中的默认实例,请指定端口1433,并且您可能不需要指定实例名称。

如果您的程序正在访问数据库中的命名实例(而不是默认实例),请不要指定端口,但必须指定实例名称。

我希望这能澄清一些上述错误带来的困惑。