调试动态SQL语句

在调试程序时我们经常需要打印出程序中的SQL语句到其他地方执行或者查看,这对于静态SQL语句(由Statement使用的SQL)直接调用System.out.println()就可以了,但要是动态SQL语句(由PreparedStatement使用的SQL)直接调用System.out.println()的话只会打印出那些带问号的SQL文,要想到别的地方执行还需要手动替换打印出SQL中的问号,要是字段少还好,很多字段的话就非常不方便了,而且手动替换十分容易出错。所以我便自己写了一段小程序来处理这种情况,在实际使用中十分方便。

为清楚起见,我将这项功能分为几个部分并分别放到不同的类中。在实际使用时应当根据实际情况调整这些方法的位置。

Parameter.java

Util.java

Test.java

调用new Test().test()后输出结果:
INSERT INTO t_test ( f1, f2, f3, f4, f5, f6, f7, f8 ) VALUES ( 1 , 2.0 , 3.0 , 'x' , 'DEF' , '2005-12-14' , '2005-12-14 11:04:38' , null )

在处理Types.DATE和Types.TIME类型时所使用的日期时间格式在本文中是以MySQL中格式为准的,并不能保证在其他实现中输出的SQL文也能正确执行。

其中那个getPreparedSql内容并没有写全(理论上要处理所有java.sql.Types中的所有type情况),要根据需要实际添加,只要和在test中调用的一致就可以了。不过目前这些在基本的应用中已经可以了。

另外对于那个getPreparedSql的入口参数并没有完全检测其合法性,如果仅为调试使用,在调用时注意就可以了。

[最后编辑于2005年12月14日 voozoo]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值