JDBC中?占位符的使用说明
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDBC中?占位符的使用说明相关的知识,希望对你有一定的参考价值。
VALUES(?,?,?,?,?,NOW(),NOW()),这些问号该如何理解,在实际中又是如何把信息输入mysql数据库的。
?的意思就是这个位置有东西,但是现在我不放进去,你先吧位置给我留着,我一会放进去,这是预编译的用法,PreparedStatement 是预编译的类,里面有方法setXXX,XXX是指数据类型,需要注意的是这个方法的计数是从1开始的,很多java计数是0开始的,这个是特列。放什么样的用什么方法,你百度下java预编译自己看,比我讲的更清楚 参考技术A 这个要配合PreparedStatement来使用的比如
PreparedStatement ps = conn.prepareStatement(sql);
sql是你刚才那条语句
然后
ps.setString(1, xxx);
这个记数从一开始,对应每个问号, 而且还要保证数据类型正确。追问
就是在实际中要先依次赋值然后执行是吧
追答对,而且这个set也要对应相当要插入数据库的数据类型
int 就是setInt
String就是setString这样
query.setString(0,username);
query.setString(1, password);
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以上是关于JDBC中?占位符的使用说明的主要内容,如果未能解决你的问题,请参考以下文章
jdbcTemplate:包含占位符的SQL无法打印参数信息