帮我创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/database
将xxxx
replace为您的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,并且您可能不需要指定实例名称。
如果您的程序正在访问数据库中的命名实例(而不是默认实例),请不要指定端口,但必须指定实例名称。
我希望这能澄清一些上述错误带来的困惑。
- 注解@Id和@GeneratedValue(strategy = GenerationType.IDENTITY)有什么用? 为什么生成types是身份?
- 如何在android / dalvik上dynamic加载Java类?
- 你如何select使用Hibernate的列?
- 在Java中最常用的运行时exception是什么?
- 如何在Ubuntu 10.10(Maverick Meerkat)上安装Sun Java JDK?
- IntelliJ组织import
- 如何在Maven中读取外部属性文件
- 如何检测在单个Action类中的多个提交button场景中单击的提交button?
- 包与Java 9中的自动模块冲突