gpt4 book ai didi

mysql - 没有使用 MySQL Connector/J 的服务器端准备语句

转载 作者:可可西里 更新时间:2023-11-01 07:50:28 25 4
gpt4 key购买 nike

据我了解,MySQL 5.1 支持服务器端准备语句。因此下面的代码应该准备语句一次,然后执行 10 次:

    Connection conn = ds.getConnection();
PreparedStatement stmt = conn.prepareStatement("SELECT COUNT(*) FROM users WHERE user_id=?");
for (int i=0; i<10; i++)
{
stmt.setString(1, "FOO"+i);
ResultSet res = stmt.executeQuery();
res.close();
}
stmt.close();
conn.close();

我在 mysqld 日志中看到的是直接执行的查询:

    SELECT @@session.tx_isolation
SELECT USER()
SELECT COUNT(*) FROM users WHERE user_id='FOO0'
SELECT COUNT(*) FROM users WHERE user_id='FOO1'
SELECT COUNT(*) FROM users WHERE user_id='FOO2'
...

我在协议(protocol)日志中也看到了每次完整发送的查询(使用 tcpdump)。

使用连接器/J 5.1.12 和 MySQL 5.1.44。 JDBC URL 中没有有趣的 JDBC 选项。本次测试直奔司机,无池。

为什么不准备报表?

最佳答案

除非您使用连接参数 useServerPrepStmts=true 打开真正的服务器端语句,否则 Connector/J 驱动程序会在本地处理准备好的语句。

http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-configuration-properties.html

关于mysql - 没有使用 MySQL Connector/J 的服务器端准备语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3946108/

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