gpt4 book ai didi

java - 使用 Microsoft JDBC 驱动程序受 SELECT INTO 查询影响的行数

转载 作者:太空宇宙 更新时间:2023-11-04 11:43:24 24 4
gpt4 key购买 nike

有没有办法获得“受影响的行”结果

SELECT * INTO TableB FROM TableA

使用 Microsoft 的 SQL Server JDBC 驱动程序吗?当我在 SQL Server Management Studio 中执行该查询时,它会以与 DELETE、INSERT 或 UPDATE 相同的方式返回行数。

我尝试了executeQuery,但它没有返回ResultSet。我尝试了 executeUpdate,但结果总是得到 -1,并且我尝试了 execute,但返回值似乎是 false,因此没有 ResultSet。我已从 2017 年 1 月 31 日下载了 MS JDBC 驱动程序 6.0,因为我了解到有关旧版本的问题。

最佳答案

更新:此问题已在 version 6.1.5 中修复SQL Server 的 JDBC 驱动程序。

<小时/> (之前的答案)

测试证实,即使使用最新的 Microsoft JDBC 驱动程序 (6.0.8112.100),也可以实现这一点

sql = "SELECT * INTO TableB FROM TableA";
try (Statement st = conn.createStatement()) {
int n = st.executeUpdate(sql);
System.out.printf("%d row(s) affected", n);
}

产生

-1 row(s) affected

而 jTDS 驱动程序正确返回实际行数:

3 row(s) affected

Microsoft JDBC 驱动程序的解决方法是使用匿名代码块返回包含 @@ROWCOUNT 的 ResultSet

sql = 
"SET NOCOUNT ON; " +
"SELECT * INTO TableB FROM TableA; " +
"SELECT @@ROWCOUNT AS n; ";
try (
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql)) {
rs.next();
int n = rs.getInt(1);
System.out.printf("%d row(s) affected", n);
}

正确返回

3 row(s) affected

关于java - 使用 Microsoft JDBC 驱动程序受 SELECT INTO 查询影响的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42573611/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com