【发布时间】:2016-12-07 21:48:52
【问题描述】:
我正在尝试使用准备好的语句执行 SQL Server 查询:
PreparedStatement pst = con.prepareStatement("select * from openquery(SERVERNAME," +
"'Select r.A , r.B, c.C from Y r" +
"INNER JOIN X c" +
"ON r.RNID = c.RNID ')" +
"where c.C in ?");
pst.setString(1, data);
ResultSet rs = pst.executeQuery();
我收到此错误消息:
com.microsoft.sqlserver.jdbc.SQLServerException:无法从链接服务器“SERVERNAME”的 OLE DB 提供程序“MSDASQL”获取列信息。
更新
修复SQL语句后添加缺失的空格
PreparedStatement pst = con.prepareStatement("select * from openquery(SERVERNAME, " +
"'Select r.A , r.B, c.C from Y r " +
"INNER JOIN X c " +
"ON r.RNID = c.RNID ') " +
"where c.C in ?");
我现在得到错误
com.microsoft.sqlserver.jdbc.SQLServerException:无法绑定多部分标识符“c.C”
【问题讨论】:
-
看来你的 OLEDB 配置错误
-
INNER和ON之前缺少空格。 -
我在
INNER和ON之前添加了空格,我得到了错误:com.microsoft.sqlserver.jdbc.SQLServerException: The multi-part identifier "c.C" could not be bound.(我在我的帖子中更新了查询中的属性名称)
标签: java sql-server sql-server-2008 jdbc