Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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 一种简单的JDBC客户端中间件仿真_Java_Database_Jdbc_Client_Middleware - Fatal编程技术网

Java 一种简单的JDBC客户端中间件仿真

Java 一种简单的JDBC客户端中间件仿真,java,database,jdbc,client,middleware,Java,Database,Jdbc,Client,Middleware,我试图实现一个简单的客户机中间件数据库体系结构,客户机将请求发送到中间件,然后在数据库上执行请求,最后将答案返回给客户机 为了测试系统,我必须使用tpc-h基准测试,它只是一个巨大查询的测试台,为了测试系统的响应时间和吞吐量,必须执行这些查询 我面临的问题让我抓狂:客户端向中间件发送150个独立的insert查询,然后中间件使用“executeUpdate”处理每个查询,下面是我的一段代码: Connection cc = c.getConnection(); Statement s = cc.

我试图实现一个简单的客户机中间件数据库体系结构,客户机将请求发送到中间件,然后在数据库上执行请求,最后将答案返回给客户机

为了测试系统,我必须使用tpc-h基准测试,它只是一个巨大查询的测试台,为了测试系统的响应时间和吞吐量,必须执行这些查询

我面临的问题让我抓狂:客户端向中间件发送150个独立的insert查询,然后中间件使用“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次,返回150次1,正确答案),但结果不正确

有人对如何解决这个问题有什么建议吗

先谢谢你


-g

为什么不尝试使用事务,而不是为每个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."

我认为这与数据库连接的永久打开和关闭有关。