sql语句参数拼接Bug

By | 10月05日
Advertisement

/**
* 根据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了。

Similar Posts:

  • 12-C#中SQL语句参数写法 orcale

    OracleConnection oc=new OracleConnection("data source=osserver;User Id=****;password=**"); OracleCommand cmd=new OracleCommand("insert into cym1.uploadfile (filename,filecontent) values (:filename,:filecontent)",oc); OracleParameter op

  • 理想中的SQL语句条件拼接方式

    背景 Orm用过一些,但处理增删改上面做的都不错.但是查询上跟我想要的效果总是差了一点.我想要的效果则是这样,基于某种命名规则进行传参,后台解析器知道命名规则即可知道它要查询什么样的数据. 谈谈我之前的做法,比如说,页面将查询条件存入对象,序列化后后传递给控制器,此时控制器将其反序列化成Json,数据类型使用Dictionary<string,object>.里面存储的Key目前是这样的格式: BeginTime, EndTime, Age, LikeAddress , NullTel , U

  • 关于SQL语句的拼接问题

    1 public List<PostVo> queryByKeyWord(String keyWord){ 2 BeanListHandler<PostVo> bh=new BeanListHandler<PostVo>(PostVo.class); 3 List<PostVo> list=jt.query("select * from post where title like '%?%' or author like '%?%' or cont

  • PDOStatement-&amp;gt;bindParam SQL语句参数绑定

    PDOStatement->bindParam (PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) PDOStatement->bindParam - Binds a parameter to the specified variable name Description bool PDOStatement::bindParam ( mixed $parameter , mixed &$variable [, int $data_type [, int

  • PDOStatement-&gt;bindParam SQL语句参数绑定

    PDOStatement->bindParam (PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) PDOStatement->bindParam — Binds a parameter to the specified variable name Description bool PDOStatement::bindParam ( mixed $parameter , mixed &$variable [, int $data_type [, int

  • sql 语句的拼接

    std::string CDBTable::getCreateTableSQL(std::string tableName) { if (tableName.empty()) { BOMB_IF(_TableNames.empty(), "table is empty", return "") tableName = _TableNames[0]; } BOMB_IF(!containsTable(tableName), "we don't have su

  • c#LINQ to SQL语句

    LINQ to SQL语句(1)之Where   Where操作   适用场景:实现过滤,查询等功能.   说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句.   Where操作包括3种形式,分别为简单形式.关系条件形式.First()形式.下面分别用实例举例下:   1.简单形式:   例如:使用where筛选在伦敦的客户   var q = from c in db.Customers where c.City == "London&

  • [android] sql语句实现数据库的增删改查

    Javaweb实现增删改查的步骤,1.加载jdbc的驱动,2.连接到数据库 3.准备sql语句, Android中加载驱动已经完成了,拿到数据库的引用就是链接数据库了. 获取SQLitedatabase 对象,调用上一节中helper对象的getWritableDatabase()方法 调用SQLitedatabase 对象的execSQL()方法,执行sql语句 例如:insert into person (name) values("taoshihan") Select * fro

  • LINQ to SQL 语句(2)之 Select/Distinct

    LINQ to SQL 语句(2)之 Select/Distinct [1] Select 介绍 1 [2] Select 介绍 2 [3] Select 介绍 3 和 Distinct 介绍 Select/Distinct 操作符 适用场景:o(∩_∩) o„ 查询呗. 说明:和 SQL 命令中的 select 作用相似但位置不同, 查询表达式中的 select 及所接子句是 放在表达式最后并把子句中的变量也就是结 果返回回来:延迟. Select/Distinct 操作包括 9 种形式,分别

  • linq to sql 语句基本查询(3):Select和Count/Sum/Min/Max/Avg - taofengli288 - 博客园

    Select/Distinct操作符 说明:和SQL命令中的select作用相似但位置不同,查询表达式中的select及所接子句是放在表达式最后并把子句中的变量也就是结果返回回来:延迟. Select/Distinct操作包括9种形式,分别为简单用法.匿名类型形式.条件形式.指定类型形式.筛选形式.整形类型形式.嵌套类型形式.本地方法调用形式.Distinct形式. 1.简单用法: 这个示例返回仅含客户联系人姓名的序列. var q = from c in db.Customers select

Tags: