jdbcTemplate:包含占位符的SQL无法打印参数信息

网上的解决方案是在log4j设置以下参数:(如:http://my.oschina.net/wamdy/blog/468491)

log4j.logger.org.springframework.jdbc.core.JdbcTemplate=debug

log4j.logger.org.springframework.jdbc.core.StatementCreatorUtils=debug

但是设置后打印的内容只包含sql语句,不包含参数信息

经过多方寻找都是上文的解决方案,后来在此找到了结果:http://stackoverflow.com/questions/1932208/seeing-the-underlying-sql-in-the-spring-jdbctemplate

需要设置:log4j.logger.org.springframework.jdbc.core.StatementCreatorUtils=Trace

JdbcTemplate 还是设为debug

如下:

#输出SQL语句

log4j.logger.org.springframework.jdbc.core.JdbcTemplate=debug

#输出参数值

log4j.logger.org.springframework.jdbc.core.StatementCreatorUtils=Trace


来自为知笔记(Wiz)

时间: 2024-11-11 04:10:21

jdbcTemplate:包含占位符的SQL无法打印参数信息的相关文章

占位符,SQL注入?

这两天在上课时被同学拿了一段代码问我,这段代码有什么问题,我看了一会说:Connection和PreparedStatement都没关.他说不止这方面的问题,还有sql注入的问题,我就坚决的说使用了占位符不存在sql注入的问题,但是他提出了一种情况,在我看来也很有道理的情况. pstmt = conn.prepareStatement("delete from user where user.id=?"); pstmt.setString(1, "w"); 他认为如

python-sqlite3之占位符

The sqlite3 module supports two kinds of placeholders: question marks (qmark style) and named placeholders (named style). execute(sql[, parameters]) sqlite3模块支持两种占位符:?占位符 和 有名占位符. 但是在使用 ?占位符时,要注意一点 当传入一个参数且该参数是字符串时,要将该字符串转换为 列表或元组. 验证过程如下:仔细看注释并运行 1

C#sql语句如何使用占位符

背景:在程序中,写sql语句时,可能要根据变量的值不同,SQL语句产生相应的变化.比如说存在变量StuName,根据变量值的不同,检索不同姓名的学生记录,这时需用到占位符的知识. 1,{0}占位符,代码如下: 1 string sql=@"select top 1 * from Student where StuName='{0}'"; 2 sql = string.Format(sql, "李四"); 以上代码即是在Student数据表中,查询学生姓名为“李四”的

为什么占位符可以防止sql注入?

先看下面用占位符来查询的一句话 String sql = "select * from administrator where adminname=?"; psm = con.prepareStatement(sql); String s_name ="zhangsan' or '1'='1"; psm.setString(1, s_name); 假设数据库表中并没有zhangsan这个用户名, 用plsql运行sql语句,可以查出来所有的用户名,但是在Java中并

SQl语句中使用占位符的优点

1.增加SQL代码可读性2.占位符可以预先编译,提高执行效率3.防止SQL注入4用占位符的目的是绑定变量,这样可以减少数据SQL的硬解析,所以执行效率会提高不少 绑定变量是Oracle解决硬解析的首要利器,能解决OLTP系统中library cache的过度耗用以提高性能 绑定变量是Oracle解决硬解析的首要利器,能解决OLTP系统中library cache的过度耗用以提高性能.然刀子磨的太快,使起来锋利,却容易折断.凡事皆有利弊二性,因地制宜,因时制宜,全在如何权衡而已.本文讲述了绑定变量

Mybatis 中 sql 语句的占位符 #{} 和 ${}

#{} 表示一个占位符号,通过 #{} 可以实现 preparedStatement 向占位符中设置值,自动进行 java 类型和 jdbc 类型转换.#{} 可以有效防止   sql注入.#{} 可以接收简单类型值或 pojo 属性值. 如果 parameterType 传输单个简单类型值,#{} 括号中可以是 value 或其它名称. ${} 表示拼接sql串,通过 ${} 可以将 parameterType 传入的内容拼接在 sql 中且不进行 jdbc 类型转换,不能防止 sql 注入问

sql数据库查询结果字段包含换行符导致复制到Excel发生错位问题的解决

问题描述:在工作过程中,有时会遇到这样的问题,写好sql查询语句在数据库中查询数据,看到行数(比如说是1000行),但是把查询结果复制到Excel里面,却发生了行列错位问题,而导致Excel里面的行数是超过1000行的,造成数据行数的不一致. 问题重现:字段值包含char(10)换行符,复制字段值到Excel. 根源:某些行列对应单元格包含了换行符,导致复制到Excel里面发生错位. 解决方案:方案1(推荐):把有问题的字段值,用英文双引号括起来,这样就能把字段值里面的换行符限制在正确的Exce

sql 占位符及部分时间函数

Mysql 预处理占位符 %s -- 表示字段串 %d -- 表示整形数字 %f -- 表示浮点数 (UNIX_TIMESTAMP(DATE_SUB(now(), INTERVAL jp_days DAY)) //查询当前时间 加上 jp_days 后的天数据,转成时间戳 例:select id,zlday,updatetime ,now(),from_unixtime(updatetime)as time from pre_orders where UNIX_TIMESTAMP(DATE_SU

ADO.NET 占位符(防SQL 注入攻击)

当在添加程序中注入攻击时在控制台应用程序中可以这样写: 请输入编号:U006 请输入用户名:无敌 请输入密码:1234 请输入昵称:呵呵 请输入性别:True 请输入生日:2000-1-1 请输入民族:N004');update Users set PassWord='0000';-- 添加成功! 这样,不仅添加成功一条数据,而且数据库中Users表里的所有数据的密码都被修改成了0000.数据被篡改了,数据库被成功注入攻击. 那么我们怎么来防御这种注入攻击呢? 其实很简单,只需要修改下程序,在添