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

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

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

我想要创建一个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"));

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

热门问答

COS范围下载?

许金泉

腾讯 · 高级工程师 (已认证)

腾讯云COS前端开发
推荐
可以用标准 Http 头部 Range 来指定下载范围。 COS 的 SDK 应该都支持自定义 Header,可以设置: Range: 'bytes=2000-7999' 和 Range: 'bytes=9000-9599'... 展开详请

cmq的Queue Endpoint 订阅-消费问题?

请您查看一下您的根账号下是否有持久密钥? 如果无法解决您的问题,请您在控制台的右上角发起工单提问(https://console.cloud.tencent.com/workorder),我们会有专人进行问题排查和解决,感谢您使用CMQ消息队列服务

我开通了直播,现在可以使用二维码扫码播放,但是我想在播放的界面,加一个发红包的功能,该怎么做?

腾讯云-chaoli腾讯云产品二部,技术支持
推荐
使用云通信功能,可以实现发红包。http://faq.qcloudtrtc.com/docs/%E4%BA%91%E9%80%9A%E8%AE%AF%E6%A8%A1%E5%9D%97/%E6%B6%88%E6%81%AF%E9%97%AE%E9%A2%98.html?h=%E7...... 展开详请

rtmp 推流,但是环境噪音被放大了,请问这个怎么设置,是否有消除噪音的方法?

腾讯云-chaoli腾讯云产品二部,技术支持
推荐
你好TXLivePushConfig有降噪接口:setANS。 SDK 对于 32000Hz 的音频数据是支持降噪的,现在 SDK 都是 48000Hz 采样率的了,不支持使用降噪接口了。 噪音太大通常原因是采集端和播放端距离过近造成的声音循环采集,可以将两台设备离远一些(3m ...... 展开详请

域名备案小程序登陆不上?

推荐已采纳
首先,用小程序不用幕布照片了 其次上述登录失败问题,可以参考以下操作: 1. 删除小程序; 2. 删掉微信进程; 3. 重新打开微信或建议客户使用其他机型试下,苹果7有这个问题,如果还是操作不了,可以让客户工单提供下机型、手机版本。... 展开详请

腾讯云直播 ,后台能否设置付费才能观看视频,和主持人设置禁言?

腾讯云-chaoli腾讯云产品二部,技术支持
推荐

可以做到:有直播地址就能播放,业务后台不给终端下发直播地址,就能限制观看直播。禁言功能,是指连麦时的禁言功能吗?有setMute静音接口

所属标签

扫码关注云+社区