在 Java 中构建 SQL 字符串的最简洁方法

2023-11-24

我想构建一个 SQL 字符串来执行数据库操作(更新、删除、插入、选择之类的事情) - 而不是使用数百万个“+”和引号的糟糕的字符串连接方法,这充其量是不可读的 - 有一定是更好的方法。

我确实考虑过使用 MessageFormat - 但它应该用于用户消息,尽管我认为它会完成合理的工作 - 但我想应该有一些与 java sql 库中的 SQL 类型操作更一致的东西。

Groovy 有什么好处吗?


首先考虑在准备好的语句中使用查询参数:

PreparedStatement stm = c.prepareStatement("UPDATE user_table SET name=? WHERE id=?");
stm.setString(1, "the name");
stm.setInt(2, 345);
stm.executeUpdate();

可以做的另一件事是将所有查询保留在属性文件中。例如 在queries.properties文件中可以放置上面的查询:

update_query=UPDATE user_table SET name=? WHERE id=?

然后在一个简单的实用程序类的帮助下:

public class Queries {

    private static final String propFileName = "queries.properties";
    private static Properties props;

    public static Properties getQueries() throws SQLException {
        InputStream is = 
            Queries.class.getResourceAsStream("/" + propFileName);
        if (is == null){
            throw new SQLException("Unable to load property file: " + propFileName);
        }
        //singleton
        if(props == null){
            props = new Properties();
            try {
                props.load(is);
            } catch (IOException e) {
                throw new SQLException("Unable to load property file: " + propFileName + "\n" + e.getMessage());
            }           
        }
        return props;
    }

    public static String getQuery(String query) throws SQLException{
        return getQueries().getProperty(query);
    }

}

您可以按如下方式使用查询:

PreparedStatement stm = c.prepareStatement(Queries.getQuery("update_query"));

这是一个相当简单的解决方案,但效果很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Java 中构建 SQL 字符串的最简洁方法 的相关文章

随机推荐

  • 代理对是如何计算的?

    如果 unicode 代码点使用 17 位或更多 则如何计算代理对 Unicode 代码点是范围从 0x000000 到 0x10FFFF 的标 量值 因此它们是 21 位整数 而不是 17 位 代理对是 UTF 16 形式的一种机制 这将
  • AngularJS 模型

    我正在尝试了解 AngularJS 我很喜欢它 但我似乎忽略了一个核心概念 模型在哪里 例如 如果我有一个显示多个交易列表的应用程序 一个列表向服务器查询匹配某些条件的一组分页事务 另一个列表使用不同的条件 但可能有一些事务匹配这两个条件并
  • 我可以在 Visual Studio 2008 中针对 .NET Framework 4 进行开发吗?

    我的 ASP NET 应用程序在 Web 服务器上的 IIS 中运行 并使用 Microsoft NET Framework 4 Beta 2 其应用程序池设置为 NET Framework 版本 NET Framework v4 0 21
  • AngularJS:指令无法访问隔离范围对象

    我试图在具有隔离范围的指令中添加一些默认值 基本上 当我的指令被绑定时 我需要使用作用域对象进行一些 DOM 操作 下面是我的代码 控制器 angular module ctrl controller TempCtrl function s
  • 为什么这个苹果触摸图标不起作用?

    我的网站中有以下代码 当我在 Firefox 中查看源代码并单击 href 属性时 图标会显示 因此它不是 404 错误 当代码添加到页面时 例如http website com mobile index php or http websi
  • INSTALL_FAILED_USER_RESTRICTED :使用 redmi 4 设备的 android studio

    遇到这个奇怪的错误 Installation failed with message Failed to finalize session INSTALL FAILED USER RESTRICTED Install canceled by
  • matplotlib 颜色条中的小刻度

    我目前正在尝试在颜色栏中设置小刻度 但根本无法使其工作 我尝试过 3 种方法 参见下面的代码 但它们似乎都不起作用 颜色条中是否真的可能有微小的刻度 import numpy as np import matplotlib pyplot a
  • 有符号零的最小值和最大值

    我担心以下情况 min 0 0 0 0 max 0 0 0 0 minmag x x maxmag x x 根据维基百科 IEEE 754 2008说的是关于最小值和最大值 定义了最小和最大操作 但为输入值相等但表示不同的情况留有一些余地
  • 如何在 matplotlib.pyplot.imshow 中使用“范围”

    我设法绘制了我的数据 并想为其添加背景图像 地图 数据是按长 纬度值绘制的 我也有图像三个角 左上角 右上角和左下角 的长 纬度值 我试图弄清楚如何在 imshow 中使用 范围 选项 然而 我发现的例子并没有解释如何为每个角分配 x 和
  • prestashop 将图像添加到产品中

    我有一个产品对象 我正在 PHP 脚本中创建它 我需要添加缩略图和大图像 它们位于 zip 文件中 文件名包含产品 ID 在代码中实现此目的的最佳方法是什么 我假设我需要将图像提取到文件系统中的某个位置 但我不知道 prestashop 如
  • JTable 准备编辑器如何工作

    我不明白prepareEditor是如何工作的 我无法使用prepareEditor中的Action设置prepareRenderer的可见性规则 正如我在附图中捕获的那样 第 1 行的规则按我的预期工作 如果未选择 JCheckBox 也
  • 错误 C2678:二进制“=”:找不到采用“const Recipe”类型的左侧操作数的运算符(或者没有可接受的转换)

    我正在尝试对每个元素中包含一个 int 和一个字符串的向量进行排序 它是一个类类型的向量 称为向量食谱 出现上述错误 这是我的代码 在我的 Recipe h 文件中 struct Recipe public string get cname
  • MySQL 的密钥文件不正确

    我遇到了一个 InnoDB 表的问题 表最初是 MyISAM 但不久前也将其转换为 InnodB 我正在尝试运行此查询 SELECT posts id posts post title FROM rss posts AS posts INN
  • 在 jQuery 中创建 div 元素 [重复]

    这个问题在这里已经有答案了 我如何创建一个div元素在jQuery 从 jQuery 1 4 开始 您可以将属性传递给自封闭元素 如下所示 jQuery div id some id class some class some other
  • socket.error: [Errno 32] 管道损坏

    我编写了一个客户端 服务器 python 程序 其中客户端将列表发送到服务器 服务器接收数组 删除列表的前两个元素并将其发送回客户端 服务器接收列表没有问题 但是当服务器想要发回编辑后的列表时 它显示错误 socket error Errn
  • 如何在 Visual Studio 中静态链接 VCPKG 生成的 .lib 文件

    我使用 VCPKG 构建第三方库 例如 libcurl 我有动态和静态构建 显然 导入 lib和对象 lib文件分别包含在两个不同的文件夹中 x64 windows和x64 windows static 我想将对象 libcurl lib
  • 在 D3.js 中重新排序 SVG ( z-index ) 元素

    我意识到这个问题以前已经被问过 但我无法深入了解 这是我的图表 http www gogeye com financialnews piechart index3 html 我想做的就是将硬币渲染在图表后面 我知道 D3 渲染是按照附加顺序
  • 如何查询pandas中的MultiIndex索引列值

    代码示例 In 171 A np array 1 1 1 1 3 3 3 3 5 5 6 6 In 172 B np array 111 222 222 333 333 777 In 173 C randint 10 99 6 In 174
  • 将图像转换为 Base64,反之亦然

    我想将图像转换为 Base64 然后再次转换回图像 这是我到目前为止尝试过的代码以及错误 请问有什么建议吗 public void Base64ToImage string coded System Drawing Image finalI
  • 在 Java 中构建 SQL 字符串的最简洁方法

    我想构建一个 SQL 字符串来执行数据库操作 更新 删除 插入 选择之类的事情 而不是使用数百万个 和引号的糟糕的字符串连接方法 这充其量是不可读的 有一定是更好的方法 我确实考虑过使用 MessageFormat 但它应该用于用户消息 尽