sql语句参数拼接Bug

原创 2013年12月04日 16:54:13
/**
* 根据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了。

论好的编程习惯与机制对减少人为错误的重要性——由拼接SQL语句小bug想到

一点点小教训,简要说下。 很多企业有复杂的生产流程与测试流程,多到让人烦的不行,其实这也是企业抵御风险,避免人为错误的机制。其实,这种思维很重要,个人开发写程序其实也很需要机制来抵御风险。 最...

信息流zt_使用json参数拼接sql语句

信息流zt项目中,server端接收前端发送的http json请求,解析后来拼接sql,如果单纯string拼接就比较麻烦,因此使用并改写了SqlHandle代码...

【SQL】拼接SQL语句-参数化查询-模糊查询

What?什么是拼接SQL语句         拼接SQL语句主要操作于有条件的增删改查,即条件一不定,也可以叫做组合查询。 HOW?怎么做?         1、这里先来一个最简单的连接数据...

MyBatis 向Sql语句中动态传参数·动态SQL拼接

在动态传递参数的时候,需要用到OGNL表达式,不懂的童鞋可以下去百度,这里制作一个简要的介绍 在向XML文件传递参数的时候,需要用到sqlSession.selectList("Message.que...

sql server2008性能参数获取语句

  • 2014年07月31日 16:08
  • 138KB
  • 下载

让Hibernate输出SQL语句以便更加深入调试程序----参数配置

在J2ee应用中,如果采用Hibernate框架,可以自动建立数据库实体与Java实体类的映射关系,大大方便Java程序进行持久化对象访问和操作,从而明显提高企业应用开发效率,减轻Java程序与后台数...

MyBatis学习 之 三、SQL语句映射文件-增删改查、参数、缓存

MyBatis学习 之 一、MyBatis简介与配置MyBatis+Spring+MySql MyBatis学习 之 二、SQL语句映射文件(1)resultMap MyBatis学习 之 三、S...

C# 使用参数化SQL语句

之前实现的用户登录窗体,我们在用户名和密码框中都输入1‘ or ‘1’=1’,如下图所示。单击“登录“按钮后,你会发现竟然也能进入主窗体!我们输入的名户名和密码并不正确,为何也能进入系统呢? 登录...
  • mxx1529
  • mxx1529
  • 2017年02月13日 21:37
  • 1413

MyBatis学习 之 三、SQL语句映射文件(2)增删改查、参数、缓存

2.2 select 一个select 元素非常简单。例如: Xml代码      select id="getStudent" parameterType="Stri...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sql语句参数拼接Bug
举报原因:
原因补充:

(最多只允许输入30个字)