资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 编程开发 >
Advertisement
文章正文

DBUnit在应用间导出导入数据 _编程

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   
  • Mini Java编译器(一)——任务概述  
  • java程序,保存csdn blog的文章  
  • jive Forums 4中使用中文的方法  
  • 如何封锁您的(或打开别人的) Java 代码  
  • 关于webwork验证  
  • JBoss配置mysql数据源  
  • class Prime  
  • JSP/JDBC MySQL乱码问题~~~  
  • 引用:jspSmartUpload上传下载全攻略  
  • C# Inner Class vs. java 的inner class比较  
  • 页面导航:

    正文内容:
    应用间的数据集成(eai)通常是两条路子:
      一是使用现成的eai、etl框架,定义一堆xml格式的映射文件,再写一些特殊转换的transform class,但这样的工程通常比较宏大散乱,用到最后经常会发觉还不如自己写程序快。

      二是直接自己写程序用jdbc->sql转换,快则快矣,但经常会写的比较乱、特别是列数多的时候。

      所以,我又会用万能老倌dbunit+dom4j,自己写程序来导出导入。
      dbunit因为具有xml<-->database的功能,所以很多地方都能够担任。用xml来写eai,比sql语句清晰,而且效果和写映射文件差不多,但因为都写在程序里,不用映射文件、提取数据定义文件、转换类翻来覆去四处看。
      另外,它本身带了refresh(如果不存在就插入,否则就更新,以主键为依据), clean_insert(全部删除再插入,和refresh比,会把不在xml中的数据删除)等几种操作,又简省了编程的功夫。

     例子代码:

      //dom4j创建document并向其赋值
      document document = documenthelper.createdocument();
      document.addelement("dataset");
      element root = document.getrootelement();

      while(rs.next())
      {
       item.attribute("bs").setvalue(rs.getstring("orderitemno"));
       root.add(item.createcopy());
      }

     //把documenth转换为dbunit的dataset并解决中文编码问题
      inputsource is = new documentsource(document).getinputsource();
      is.setencoding("gbk");
      idataset dataset = new flatxmldataset(is);

     //建立dbunit数据库连接
      connection conn = .....; 
      databaseconnection dbcon = new databaseconnection(conn);

      //执行插入操作
     databaseoperation.insert.execute(dbcon, dataset); 


      另外,因为目标数据库中有很多不明所以的列(约200个),不填呢又会出错,填呢又不知道填什么。所以,我先用dbunit对它进行了采样,item是从目标数据库得到的一个样本,建立document的过程中,我不断使用item.createcopy()把这条样本克隆出来。只置换了其中小部分源数据库中的需要更改的值。又是dbunit的一个bonus。


     

     
    热门推荐笔记本: IBM笔记本
    相关文章:
    webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
    ©2007 popbb.net All Rights Reserved