没用过你说的那玩意儿,呵呵
帮你顶一下。

解决方案 »

  1.   

    这个问题我已经找到了解决的方案.呵呵,同大家分享一下。
    感觉比较简单的办法有这么几个,但其实核心思想时一致的,都是固定表结构。这样你每次插入的数据不想比较的字段即使用也插不进去,想比较的数据即使为null,也会插入。
    第一种方案:准备两个数据库,一个用来存储期望值,一个用来存储实际运行得到的值,不过这样有些奢侈。
    第二种方案,也是我现在采取的方案,在内存中做出一个DataSet来,这样每次读入文件时用这个表做模板,也可以达到目的。呵呵,看看下面的代码你就明白了。
          public IDataSet makeTemplateDataSet(String tbl[], Properties selectSqls)
     throws DataSetException, SQLException {
                    if(tbl==null||selectSqls==null) {
                       return null;
                    }
                    // 取得数据库连接
    IDatabaseConnection conn = ;
    DefaultDataSet templateDataSet = new DefaultDataSet();
    for (int i = 0; i < tbl.length; i++) {
    ITable actualTable = 
         conn.createQueryTable(tbl[i], (String)selectSqls.get(tbl[i]));
         DefaultTable defalutTbl = 
         new DefaultTable(
         tbl[i],
         actualTable.getTableMetaData().getColumns());
    ITable itbl = DBUnitExecutor.makeDefaultTbl(tbl[i], selectSqls
    .getProperty(tbl[i]));
    templateDataSet.addTable(itbl);
    return templateDataSet;
    }
    return templateDataSet;
    }
    用上面做的模板DataSet以后这样你就可以使用FlatXmlDataSet中的构造器去得到自己想要比较的dataSet了。
    new FlatXmlDataSet(xmlfilename, templateDataSet);
    呵呵,就这么多,还有如果你只想比较一两个字段,可以选择过滤掉没用的列,这个自己可以查找dbunit doc