使用JDBC进行简单的客户端 - 中间件模拟

时间:2011-10-22 12:49:43

标签: java database jdbc client middleware

我正在尝试实现一个简单的客户端 - 中间件 - 数据库架构,客户端将请求发送到中间件,然后在数据库上执行它,最后将答案返回给客户端。

为了测试系统,我必须使用tpc-h基准测试,这只是必须执行的大量查询的基础,以便测试响应时间和系统的吞吐量。

我面临的问题让我发疯:客户端向中间件发送150个单独的插入查询,然后中间件使用“executeUpdate”处理每个查询,这里是我的代码:

Connection cc = c.getConnection();
Statement s = cc.createStatement();
int r = s.executeUpdate(tmpM.getMessage());
tmpR.add(c.getServerName()+":"+c.getDatabaseName()+": "+ r +" row(s) affected.");
s.close();
cc.close();

如果我只是打印所有查询并使用phpPgAdmin手动执行它们然后我用pgAdmin检查数字是否正确插入结果150,而如果我使用我的代码它不会添加所有这些,但只有一个部分内容。

我做了很多调试,结果是所有查询都被发送到db(代码执行150次并返回150次1,正确答案)但结果不正确。

有没有人对如何解决它有任何建议?

提前谢谢

-g

1 个答案:

答案 0 :(得分:2)

为什么不尝试使用事务而不是为每个insert语句打开/关闭连接。 来自Oracle JDBC教程:

"A transaction is a set of one or more statements that is executed as a unit, 
so either all of the statements are executed, or none of the statements is 
executed."

http://download.oracle.com/javase/tutorial/jdbc/basics/transactions.html