sql语句参数拼接Bug

/**
* 根据keyWords和projectId和keyTerm获取频道id
* @param projectId
* @param keyWords
* @param keyTerm
* @return
*/
@SuppressWarnings("unchecked")
public long getChannelIdByKeywords(Long projectId ,String keyWords,String keyTerm){
long channelId = 0;
String sql = "SELECT T_SERVICE_ID FROM " + IWMDATA_schema + ".DC_PROJECT WHERE PROJECT_ID=" + projectId + " AND KEYWORD ='" + keyWords+ "'" + " AND KEYTERM ='" + keyTerm+ "'";
try{
List<Map> list = jdbcTemplateIWM.queryForList(sql);
if(list != null && list.size() != 0){
Map map = list.get(0);
channelId = StringUtil.convertStrToLong(map.get("T_SERVICE_ID").toString(), 0);
}
return channelId;
}catch(Exception e){
e.printStackTrace();
return 0;
}

}

String sql = "SELECT T_SERVICE_ID FROM " + IWMDATA_schema + ".DC_PROJECT WHERE PROJECT_ID=" + projectId + " AND KEYWORD ='" + keyWords+ "'" + " AND KEYTERM ='" + keyTerm+ "'";

这句代码的Bug就是如果,我的keyWord里面有特殊字符,如可口可乐'好喝',单引号啥的,就会查不出来结果,那么

就需要这么改动:String sql = "SELECT T_SERVICE_ID FROM " + IWMDATA_schema + ".DC_PROJECT WHERE PROJECT_ID=? AND KEYWORD =? AND KEYTERM =?";

List<Map> list = jdbcTemplateIWM.queryForList(sql,new Object[]{projectId,keyWords,keyTerm});

这样就OK了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值