快速业务通道

跨多个数据源的J2EE开发: 细节探讨 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
egrator

每个为支持 DB2 Information Integrator 所写的 servlet 只需要一种方法来执行其 支持的任一查询。(根据我们的项目的性质,我们在一个 servlet 中实现查询 1 到 3, 并在另一个 servlet 中实现查询 4 和 5。我们还有两个 servlet 来实现直接数据访问: 一个支持查询 1 到 3,另一个则支持查询 4 和 5)。用户输入使我们的 servlet 能够确 定要执行它所支持的哪个查询。

当对我们的查询语句对象应用了参数标记后,我们执行了语句并返回结果:

  stmt[choice].execute();   return outputResult(choice); 

对于我们的两个 DB2 Information Integrator servlet 中的 executeQuery() 方法来 说,此代码是完全相同的。

使用直接数据访问

对每个查询使用不同的方法,为直接访问每个数据源所写的 servlet 是最容易实现的 。这是因为每个查询所返回的中间结果集都是不同的,这些结果需要插入到辅助表中来进 行进一步处理。

当对我们的查询语句对象应用了参数标记后,我们写了如下代码来执行查询 1:

ResultSet rs = null; int rows = 0; ... // fetch the data from each data source and insert it into temp table for(int i = 1; i < dbname.length; i++) {    fetch1[i].execute();    rs = fetch1[i].getResultSet();    rows = 0;    while (rs.next()) {      insert[1].setInt(1, new Double(rs.getString("p_partkey")).intValue ());    insert[1].setString(2, rs.getString("p_name"));    insert[1].setString(3, rs.getString("p_mfgr"));    insert[1].setString(4, rs.getString("p_type"));    insert[1].executeUpdate();    rows++;    }    System.out.println("> " + rows + " rows inserted from " + dbname [i]); } if (rs != null) { rs.close(); } return outputResult(1);

跨多个数据源的J2EE开发: 细节探讨(12)

时间:2011-04-11 IBM C. M. Saracco

执行查询 2 和 3 的逻辑与之非常相似,因此我们不在这里重复了。查询 4 和 5 的性 质有很大不同,并且查询 5 肯定是所有查询中最困难的。为了使您了解我们需要进行什么 样的编码,以下是对执行查询 5 的 servlet 方法的节选。同样地,我们已经除去了读取 用户的输入参数并设置这些值的代码。

// code for query #5 execution private String executeQuery3(HttpServletRequest req) throws SQLException, ParseException {    ResultSet rs = null;    int rows = 0;    // read the parameters    ...    // insert from DB2    q3db2fetch.execute();    rs = q3db2fetch.getResultSet();    while (rs.next() ) {      Q3insertfromdb2.setInt(1,new    Double(rs.getString("c_custkey")).intValue());      q3insertfromdb2.setString(2, rs.getString("c_name"));      q3insertfromdb2.setDouble(3, new Double(rs.getString("c_acctbal")).doubleValue());      q3insertfromdb2.setDouble(4, new Double(rs.getString("total_order")).doubleValue());      q3insertfromdb2.setInt(5, new Double(rs.getString("num_order")).intValue());      q3insertfromdb2.executeUpdate();      rows++;    }    System.out.println("rows inserted from db2: " + rows);    // for each c_custkey from temp table, select/update    from ora/odbc    q3tempfetch.execute();    rs = q3tempfetch.get

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号