使用Java中的SQL驱动程序连接到远程SQL Server
主要注意事项:使用Java中的SQL驱动程序连接到远程SQL Server,java,sql,sql-server,jdbc,dsn,Java,Sql,Sql Server,Jdbc,Dsn,主要注意事项: 使用SQLServer2005 使用JDK1.8 JDK1.8不再支持JDBC-ODBC网桥 我的库中有Microsoft SQLJDBC 4.0和6.2 我尝试用Java连接远程SQL Server已有相当一段时间了,但仍然无法连接。我希望使用我创建的DSN进行连接。JDK1.8使用的新驱动程序需要一个我在下面创建的连接URL。下面代码中的所有内容看起来都是正确的。但我仍然得到了错误: 严重:此驱动程序不支持Java运行时环境(JRE)1.8版。使用sqljdbc4.jar
- 使用SQLServer2005
- 使用JDK1.8
- JDK1.8不再支持JDBC-ODBC网桥
- 我的库中有Microsoft SQLJDBC 4.0和6.2
使用sqljdbc4.jar类库,它提供对JDBC4.0的支持 这是我的密码:
String connectionUrl = "jdbc:sqlserver://InterfaceDSN" +
"databaseName=DB_Local;Trusted_Connection=True;integratedSecurity=true";
// Declare the JDBC objects.
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection(connectionUrl);
String SQL = "SELECT TOP 10 * FROM Person.Contact";
stmt = con.createStatement();
rs = stmt.executeQuery(SQL);
while (rs.next()) {
System.out.println(rs.getString(4) + " " + rs.getString(6));
}
}catch (Exception e)
{
e.printStackTrace();
}
总结如下:
知道我拥有什么和需要什么,是否有其他方法连接到数据库,考虑到我正在使用JDK1.8和SQLServer2005,这里的选项已经用完了
从针对SQL Server的Microsoft JDBC驱动程序4.2 Sun Java开始
SE开发工具包(JDK)8.0和Java
您可以在找到JDBC驱动程序需求的地方阅读它
因此,您必须至少将JDBC驱动程序更新到V4.2。这一点很清楚。发生了什么
正如信息所说:
java.lang.UnsupportedOperationException: Java Runtime Environment (JRE) version 1.8 is not supported by this driver.
Use the sqljdbc4.jar class library, which provides support for JDBC 4.0.
这是因为JDBC4.0有很多更改,这意味着您需要使用更新版本的驱动程序。不能在新版本上运行旧驱动程序
如何修复它
仅使用6.2或版本应该可以解决此问题
额外信息
在JDBC4.0(Java1.6+)之后,您不需要下面的代码
我的图书馆里有两个司机,你不应该。去掉旧版本,只保留与Java8兼容的版本。在任何情况下,您都应该有一个版本为4.2或更高版本的驱动程序。我收到了以下错误:
com.microsoft.sqlserver.jdbc.SQLServerException:与主机接口的TCP/IP连接sndatabasename=TTBOM,端口1433失败。错误:“null。请验证连接属性。确保SQL Server实例正在主机上运行,并在端口接受TCP/IP连接。确保到端口的TCP连接未被防火墙阻止。”
但我知道DSN可以工作,因为我可以在Microsoft Access中使用相同的DSN。您有两个版本,并且正在使用Class.forName强制加载,这会导致问题,只有使用新的(不强制加载)才能修复itI。我已收到此错误:com.microsoft.sqlserver.jdbc.SQLServerException:与主机接口的TCP/IP连接sndatabasename=TTBOM,端口1433已失败。错误:“null。请验证连接属性。确保SQL Server实例正在主机上运行,并且在端口接受TCP/IP连接。确保到端口的TCP连接未被防火墙阻止。”
但我知道DSN是有效的,因为我可以在Microsoft Access中使用相同的DSN。您可以使用wireshark之类的工具来监视连接并查看发生了什么情况吗?在数据库之前是否缺少分号?看见而且,关键字也不一样。不要简单地为JDBC参数携带ODBC参数。
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");