Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Oracle connection preparedStatement对象打印出要执行的查询_Java_Database_Oracle_Prepared Statement - Fatal编程技术网

Java Oracle connection preparedStatement对象打印出要执行的查询

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

在Java中,我希望打印出要在数据库上提交/查询的查询,以便在查询抛出异常时看到错误

准确定位问题将非常有用,而不是试图理解Oracle异常ID,并试图匹配代码中该异常失败的确切位置。请帮忙

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中无法做到这一点,是否有任何解决方法???我改进了我的答案以适应您的评论。相关问题: