我正在一个项目中,我需要在日志文件中记录查询并将这些查询也添加到我的assert语句中
我已经使用以下驱动程序构建了准备好的语句
net.sf.log4jdbc.sql.jdbcapi.DriverSpy
网址
jdbc:log4jdbc:sybase:Tds ........
我正在使用的依赖项如下:
<dependency>
<groupId>net.sourceforge.jtds</groupId>
<artifactId>jtds</artifactId>
<version>1.3.1</version>
</dependency>
PrepareStatement示例:
public void getTest(MyBean bean) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = DatabaseUtil.getDatabaseConnection();
ps = conn.prepareStatement(objTestQueryUtil.getQuery("GET_Test"));
ps.setString(1, bean.getTypeOfTest());
ps.setString(2, bean.getTest());
ps.setString(3, bean.getTestState());
ps.setString(4, bean.getTestStep());
rs = ps.executeQuery();
while(rs.next()) {
bean.setTest(rs.getInt("Test"));
}
}catch (SQLException e) {
AutomationLog.error(e.getMessage(),e);
}finally {
DatabaseUtil.close(conn,ps,rs);
}
}
在我的assert类中,sql应该在我的assert代码中看到,例如:
Assert.assertTrue("Got Test "+query, true);
能否请您告诉我是否还有其他方法可以在java中的变量中进行查询,当前查询直接将日志记录到日志文件中,而无论如何我都无法找到可以在脚本中获取它们的方法,即存储在任何变量等上
如果当前的依存关系没有针对预先准备好的陈述的规定,则也欢迎使用其他依存关系或解决方案
答案 0 :(得分:2)
这不是最佳解决方案,但可以解决您的问题:
打开您的jtds jar文件(或下载jtds源文件并将其导入您的IDE中),找到并反编译类net.sf.log4jdbc.StatementSpy.class
在使用Maven时,您将不得不替换Maven主文件夹中的jar
这样做的缺点是您不能在多线程环境中使用它,但是可以解决问题。
我希望足够清楚