gpt4 book ai didi

java - 准备好的 SQL 语句中的命名参数。有没有真正轻量级和成熟的库呢?

转载 作者:行者123 更新时间:2023-12-04 04:54:09 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Named parameters in JDBC [duplicate]

(5 个回答)


8年前关闭。




我不想使用 ORM 或动态 SQL 构建器。我所需要的只是一个类,它可以让我使用命名参数创建准备好的语句。或者,至少,安全地替换不同数据类型参数的参数占位符。

编辑:
我知道 JDBC 不支持命名参数。这就是我问图书馆的原因。

最佳答案

据我所知,JDBC 不使用命名参数,但是对于位置参数,您根本不需要库,这足以“安全地替换不同数据类型参数的参数占位符”:

PrepareStatement statement = connection.prepareStatement
("SELECT Foo FROM Bar WHERE Baz = ?");
try {
statement.setString(1, "John O'Reilly"); // No problem with quote here
ResultSet results = statement.executeQuery();
...
} finally {
statement.close();
}

JDBC tutorial on prepared statements更多细节。

编辑:如果您真的想使用命名参数之类的东西,并且您可以控制 SQL 本身(因此您可以确保使用不会在其他地方使用的某种形式),您可以很容易地创建自己的查询翻译器:
  • 创建 TranslatedQuery实例(这是您的新类(class)),例如 "SELECT Foo FROM Bar WHERE Baz = @Baz"
  • 算出每个参数的位置,替换成?
  • 有一种方法可以返回给定名称的位置,另一种方法可以返回已翻译的 SQL

  • 完成该类的测试不应该超过几个小时的工作——它实际上不需要接触 JDBC。

    关于java - 准备好的 SQL 语句中的命名参数。有没有真正轻量级和成熟的库呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17012711/

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