用Java创建SQL字符串的最简单的方法?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (44)

我想要创建一个SQL字符串来执行数据库操作((updates, deletes, inserts, selects这样的事情) - 而不是糟糕的字符串concat方法使用数以百万计的“+”和引号

我曾考虑使用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"));

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

热门问答

腾讯云广州一区DNS变更,需要怎么操作?

思潮澎湃轻描淡写的生活,但思潮澎湃
推荐
我也收到相关的通知了,这里分享下~ 2019年1月31日,腾讯云将对广州地区旧的基础网络DNS服务器(10.225.30.181、10.225.30.223)进行下线。在此期间,腾讯云提供最新的DNS服务器供您更新使用。 我们建议您尽快将DNS服务器配置进行更新,并且我们为您提供...... 展开详请

人脸融合API Image 参数Base64数据有没有长度限制?

推荐

不支持,GET仅支持32KB以内的请求。但是您可以使用POST方法发送同样的请求,签名方式v1支持1MB的POST请求,签名方式v3支持10MB的POST请求

如何分析云测大师测试之后的结果参数?

Hyman Wang

腾讯云 · 高级产品经理 (已认证)

负责腾讯云游戏行业产品规划及发展。关注游戏行业生态,致力于腾讯内部游戏生态和技术能力开放,以及周边游戏生态资源整合。
推荐

请参考在线文档 : https://cloud.tencent.com/document/product/653/13636

Git上面如何将之前设置为public的项目修改为private?

SQL GM热爱数据库的小工匠
推荐
可以修改的,步骤如下: 1、进入项目主页,点击设置 image.png 2、点击高级设置、仓库设置、更改可见性级别 image.png 3、点击修改为私有即可 image.png ... 展开详请

上传的视屏会被压缩吗?

西风

renzha.net · 站长 (已认证)

www.renzha.net
推荐

会的,上传的视频会进行转码,所谓视频转码(Video Transcoding),是指将一个视频码流转换成另一个视频码流,以适应不同的网络带宽、不同的终端处理能力和不同的用户需求。

请问TCPlayer ios全屏播放,如何自动横屏全屏?

西风

renzha.net · 站长 (已认证)

www.renzha.net
推荐
通过 video 属性 “x5-video-orientation” 声明 TBS 播放器支持的方向,可选值:0(landscape 横屏),1:(portraint竖屏),2:(landscape | portrait 跟随手机自动旋转)。 (该属性为 TBS 内核实验性属性,...... 展开详请

所属标签

扫码关注云+社区