Omu*_*Omu 52 java connection-string jtds jdbc
我的sql server实例名是MYPC\SQLEXPRESS,我正在尝试创建一个jTDS连接字符串来连接数据库'Blog'.有人可以帮我完成吗?
我想这样做:
DriverManager.getConnection("jdbc:jtds:sqlserver://127.0.0.1:1433/Blog", "user", "password");
Run Code Online (Sandbox Code Playgroud)
我明白了
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
Run Code Online (Sandbox Code Playgroud)
Pas*_*ent 113
如jTDS Frequenlty Asked Questions中所述,jTDS 的URL格式为:
jdbc:jtds:<server_type>://<server>[:<port>][/<database>][;<property>=<value>[;...]]
Run Code Online (Sandbox Code Playgroud)
因此,要连接到由运行的MS SQL Server托管的名为"Blog"的数据库MYPC
,您最终可能会遇到以下情况:
jdbc:jtds:sqlserver://MYPC:1433/Blog;instance=SQLEXPRESS;user=sa;password=s3cr3t
Run Code Online (Sandbox Code Playgroud)
或者,如果您更喜欢使用getConnection(url, "sa", "s3cr3t")
:
jdbc:jtds:sqlserver://MYPC:1433/Blog;instance=SQLEXPRESS
Run Code Online (Sandbox Code Playgroud)
编辑:关于您的Connection refused
错误,请仔细检查您是否在端口1433上运行SQL Server,该服务正在运行,并且您没有阻止传入连接的防火墙.
acd*_*ior 39
真的,真的,真的,检查你的本地SQLEXPRESS实例是否启用了TCP/IP协议.
请按照以下步骤确保:
如果您有任何问题,请查看此博客文章了解详细信息,因为它包含屏幕截图和更多信息.
还要检查"SQL Server Browser"窗口服务是否已激活并运行:
而已.
在我安装了一个全新的本地SQLExpress后,我所要做的就是启用TCP/IP并启动SQL Server Browser服务.
在我用来测试SQLEXPRESS本地连接的代码下面.当然,您应该根据需要更改IP,DatabaseName和用户/密码:
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您使用Maven,请将其添加到您的pom.xml:
<dependency>
<groupId>net.sourceforge.jtds</groupId>
<artifactId>jtds</artifactId>
<version>1.2.4</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
jdbc:jtds:sqlserver://x.x.x.x/database
替换x.x.x.x
为SQL Server计算机的IP或主机名.
jdbc:jtds:sqlserver://MYPC/Blog;instance=SQLEXPRESS
要么
jdbc:jtds:sqlserver://MYPC:1433/Blog;instance=SQLEXPRESS
如果您还想在连接字符串中设置用户名和密码,而不是分别对连接对象设置:
jdbc:jtds:sqlserver://MYPC/Blog;instance=SQLEXPRESS;user=foo;password=bar
(更新了我的错误信息并添加了对实例语法的引用)