读书人

怎么获取PreparedStatement参数设置的

发布时间: 2012-11-18 10:51:21 作者: rapoo

如何获取PreparedStatement参数设置的值?
如:

 String sql="select * from table where field1=? and field2=? " ... preparedStatement.setString(1,"a"); preparedStatement.setString(2,"b");


怎样才能获取 preparedStatement的参数值a,b?
1 楼 jobs002 2006-09-23 好像是这个方法.
getParameterMetaData
ParameterMetaData getParameterMetaData()
throws SQLException检索此 PreparedStatement 对象的参数的编号、类型和属性。

返回:
一个 ParameterMetaData 对象,它包含有关此 PreparedStatement 对象的参数的编号、类型和属性的信息
抛出:
SQLException - 如果发生数据库访问错误
不过还是不明白,"select * from table where field=? and field=?"
我想设置的参数应该是通过函数参数传递过来,
获取 preparedStatement的参数值a,b又有什么意义??
2 楼 zrweng 2006-09-23 ParameterMetaData 没有获取参数值的方法。
我是想在PreparedStatement绑定参数后,把SQL(含设置后的参数值)log出来 3 楼 codeutil 2006-09-23
ibm有篇现成的文章,通过装饰模式来实现.

http://www-128.ibm.com/developerworks/cn/java/j-loggable/j-loggable.zip

http://www-128.ibm.com/developerworks/cn/java/j-loggable/index.html

JDBC 查询日志变得简单

使用增强型PreparedStatement向JDBC代码增加日志功能

级别: 初级

Jens Wyke, 顾问, IBM

2003 年 7 月 17 日

4 楼 zrweng 2006-09-23 谢谢楼上,不过那个j-loggable不能直接用,没有全部实现PrepareStatement接口
5 楼 zrweng 2006-09-24 各位是通过什么方式打印出PrepareStatement设置参数后的SQL? 6 楼 kof99th 2006-09-25 用p6spy,设置一下就行 7 楼 zrweng 2006-09-25 用了一下p6spy还不错,但是能否修改p6spy的输出格式?
未赋值的statement不想显示,否则有点乱 8 楼 zrweng 2006-09-25 OK,可以了,修改了一下P6spy的源码 9 楼 jvincent 2007-02-12 这个应该有很多人会用到,能否共享一下? 10 楼 jvincent 2007-02-12 j-loggable可以直接用的...修改一下即可 11 楼 jenny825 2007-05-22 Proxy就可以了!

参考下 ibatis 中的PrepareStatementProxy 12 楼 sorphi 2007-05-23 试试dimple?

http://www.iteye.com/topic/38299
13 楼 lovexixi 2007-05-26 唉,两个?需要两个参数填充饿 14 楼 spiritfrog 2007-05-29 codeutil 写道
ibm有篇现成的文章,通过装饰模式来实现.

http://www-128.ibm.com/developerworks/cn/java/j-loggable/j-loggable.zip

http://www-128.ibm.com/developerworks/cn/java/j-loggable/index.html

JDBC 查询日志变得简单

使用增强型PreparedStatement向JDBC代码增加日志功能

级别: 初级

Jens Wyke, 顾问, IBM

2003 年 7 月 17 日


j-loggable的代码我看了一下,确实部分方法没有实现,但是增加日志的方法已经有了,剩下的自己稍作修改就可以用了。其实是用的装饰模式实现增强型PreparedStatement,PreparedStatement接口的实现多数还是通过一个wrappedStatement(已经实现了PreparedStatement)来完成,那些没有实现的方法只要调用wrappedStatement同名方法即可。 15 楼 diandidemeng 2007-07-26 收下了,刚好用上

读书人网 >软件架构设计

热点推荐