Java Oracle connection preparedStatement对象打印出要执行的查询
在Java中,我希望打印出要在数据库上提交/查询的查询,以便在查询抛出异常时看到错误 准确定位问题将非常有用,而不是试图理解Oracle异常ID,并试图匹配代码中该异常失败的确切位置。请帮忙Java Oracle connection preparedStatement对象打印出要执行的查询,java,database,oracle,prepared-statement,Java,Database,Oracle,Prepared Statement,在Java中,我希望打印出要在数据库上提交/查询的查询,以便在查询抛出异常时看到错误 准确定位问题将非常有用,而不是试图理解Oracle异常ID,并试图匹配代码中该异常失败的确切位置。请帮忙 PreparedStatement ps=conn.prepareStatement(“从EMPNAME=?”的员工中选择*” ps.setString(1,“绿巨人”) ps.executeQuery() 理想情况下,我希望执行syso(ps)或syso(ps.getquery),并且输出应该是 从EMP
PreparedStatement ps=conn.prepareStatement(“从EMPNAME=?”的员工中选择*”代码>
ps.setString(1,“绿巨人”)代码>
ps.executeQuery()代码>
理想情况下,我希望执行syso(ps)或syso(ps.getquery),并且输出应该是
从EMPNAME='HULK'所在的员工中选择*
或
SELECT*FROM EMPNAME=
我想这已经得到了回答
简短回答:打印toString()方法或PrepareStatement以查看用值替换绑定变量的查询
但是:这取决于实施者。并非所有的JDBC驱动程序都添加了这样的细节。
如果您的特定驱动程序不符合此要求,那么唯一的解决方法就是通过连接值而不是使用绑定变量来组合SQL(失去了使用绑定变量时RDBMS提供的性能优势)
但是对于这个,你必须把东西转换成字符串,等等
这将是自相矛盾的,因为我发现连接的SQL最容易出错,并且最需要打印和检查。我遇到了一件有趣的事情,它允许您记录SQL调用。我还没有机会使用它,但我认为能够更改日志记录级别并将SQL调用写入日志文件是一个好主意
这比你要求的要多,但我认为它可能值得扔掉 同意。MySQL确实打印了这些信息,但我正在寻找ORACLE JDBC驱动程序。如果在ORACLE中无法做到这一点,是否有任何解决方法???我改进了我的答案以适应您的评论。相关问题: