gpt4 book ai didi

java - 为什么我需要一个连接来创建 PreparedStatements?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:08:03 25 4
gpt4 key购买 nike

我想为 many reasons 使用准备好的语句.但是,我想创建一个如下所示的方法:

/* This opens a connection, executes the query, and closes the connection */
public static void executeNonQuery(String queryString);

换句话说,我希望我的应用程序逻辑只需要制定查询和输入参数,而不是处理连接和语句。但是,PreparedStatements 是从连接对象创建的,因此我目前被迫使用 String.format() 准备查询字符串 - 但丑陋且危险。

有没有办法在不使用 String.format() 的情况下完成我想做的事情?

最佳答案

Why do I need a connection to create PreparedStatements ?

因为在大多数 RDBMS 中,语句都是基于每个连接准备的。

准备好的语句实际上是缓存的执行计划,不会将您的权限、编码、排序规则设置等考虑在内。

所有这些都是在查询解析期间完成的。

Is there a way to do what I want without using String.format()

不明白为什么你需要 String.format() 在这里。

您可以将查询实现为类,创建连接并在类构造函数中准备查询,然后在方法中执行它。

参数化查询通常如下所示:

SELECT  *
FROM table
WHERE col1 = ?
AND col2 = ?

,其中绑定(bind)参数将在查询执行期间替换 ?

如果你想要一个static方法:

  • 创建一个static 连接句柄。
  • 使用参数化查询文本作为,并将准备查询的句柄作为,创建准备好的查询的静态哈希表>.
  • 每当您想执行查询时,找到它的句柄(如果没有找到则创建它)并使用 to 绑定(bind)参数并执行查询。

关于java - 为什么我需要一个连接来创建 PreparedStatements?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/964989/

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