试图使用通过ODBC系统DSN从Java 6的控制台应用程序到Microsoft SQL Server 2008 R2的的Microsoft Windows Server 2008 R2 64位系统上连接SQL Server Native Client 10.0。下面的源代码:ODBC错误:无效的字符串或缓冲区长度 - 微软Server 2008的32位VS 2008 R2 64位
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String srcURL = "jdbc:odbc:FOO";
if (dbc == null)
{
dbc = DriverManager.getConnection(srcURL);
dbc.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
}
else
{
dbc.close();
dbc = DriverManager.getConnection(srcURL);
dbc.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
}
}
catch (ClassNotFoundException cx)
{
System.out.println("class not found");
}
catch (SQLException sx)
{
System.out.println("SQL Exception: " + sx);
log.info("SQL Exception: " + sx);
}
抛出错误
java.sql.exception [Microsoft] [ODBC Driver Manager] invalid string buffer length
令人恼火,相同的代码,以及ODBC系统DSN在确切相同的方式配置,WORKS与MS Server 2008的32位(非R2)和MS SQL Server 2008 R2。这两个系统之间的Microsoft ODBC驱动程序DLL是不同的版本,6.0.xxxx与6.1.xxxx,我怀疑是罪魁祸首。
您有参考吗? Oracle网站上记录了这个错误的东西? – 2014-06-11 09:03:37
我没有任何文档。在PC与64位执行查询againt访问和它显示我这个错误。只有Java的1.7.17升级到70年7月1日,该工程 – user503601 2014-06-11 12:13:08
你意味着这个https://bugs.openjdk.java.net/browse/JDK-8038751 – Horcrux7 2015-03-19 12:52:41