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这样

本回答被提问者采纳
参考技术B Query query=session.createQuery("from Tuser user where user.sbh=? and user.password=?");
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无法打印参数信息

javaWeb_JDBC_PreparedStatemment的使用

使用jquery在空输入字段中获取占位符的值?

Jfinal数据库操作语句中占位符的使用

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

更改占位符的 css 属性