`

DbUnit 工具类: 用来做数据库数据的导入导出

 
阅读更多

比较有用的文档地址:

http://www.dbunit.org/faq.html#streaming

http://www.dbunit.org/properties.html#qualifiedtablenames

http://www.dbunit.org/components.html#streamingdataset

工具类

package com.chenjo.expb;

import java.io.FileNotFoundException;   
import java.io.FileOutputStream;   
import java.io.IOException;   
import java.sql.SQLException;   
import java.util.Iterator;   
import java.util.Map;   
import java.util.Set;   
  
import org.dbunit.DatabaseUnitException;   
import org.dbunit.database.DatabaseConfig;   
import org.dbunit.database.ForwardOnlyResultSetTableFactory;   
import org.dbunit.database.IDatabaseConnection;   
import org.dbunit.database.QueryDataSet;   
import org.dbunit.dataset.CachedDataSet;   
import org.dbunit.dataset.DataSetException;   
import org.dbunit.dataset.IDataSet;   
import org.dbunit.dataset.stream.IDataSetProducer;   
import org.dbunit.dataset.stream.StreamingDataSet;   
import org.dbunit.dataset.xml.FlatXmlDataSet;   
import org.dbunit.dataset.xml.FlatXmlProducer;   
import org.dbunit.dataset.xml.XmlDataSet;   
import org.dbunit.dataset.xml.XmlProducer;   
import org.dbunit.operation.DatabaseOperation;   
import org.xml.sax.InputSource;   
  
public abstract class DBXMLHelper {   
  
    // partial database export   
    public static void exportPartial(IDatabaseConnection connection,   
            String fileName, Set<String> tableNames, Map<String,String> sqls, boolean streamed,   
            boolean flat) throws SQLException, DataSetException,   
            FileNotFoundException, IOException {   
        connection.getConfig().setFeature(   
                DatabaseConfig.FEATURE_QUALIFIED_TABLE_NAMES, true);   
        if (streamed)   
            connection.getConfig().setProperty(   
                    DatabaseConfig.PROPERTY_RESULTSET_TABLE_FACTORY,   
                    new ForwardOnlyResultSetTableFactory());   
  
        QueryDataSet partialDataSet = new QueryDataSet(connection);   
        // all data   
        if (null != tableNames)   
            for (Iterator<String> it = tableNames.iterator(); it.hasNext();) {   
                partialDataSet.addTable( it.next());   
            }   
        // sql query   
        if (null != sqls)   
            for (Iterator<String> it = sqls.keySet().iterator(); it.hasNext();) {   
                String key =  it.next();   
                partialDataSet.addTable(key, (String) sqls.get(key));   
            }   
  
        if (flat)   
            FlatXmlDataSet   
                    .write(partialDataSet, new FileOutputStream(fileName));   
        else  
            XmlDataSet.write(partialDataSet, new FileOutputStream(fileName));   
    }   
  
    // full database export   
    public static void exportDatabase(IDatabaseConnection connection,   
            String fileName, boolean streamed, boolean flat)   
            throws SQLException, DatabaseUnitException, FileNotFoundException,   
            IOException {   
        if (streamed)   
            connection.getConfig().setProperty(   
                    DatabaseConfig.PROPERTY_RESULTSET_TABLE_FACTORY,   
                    new ForwardOnlyResultSetTableFactory());   
  
        IDataSet fullDataSet = connection.createDataSet();   
        if (flat)   
            FlatXmlDataSet.write(fullDataSet, new FileOutputStream(fileName));   
        else  
            XmlDataSet.write(fullDataSet, new FileOutputStream(fileName));   
    }   
  
    public static void refreshData(IDatabaseConnection connection,   
            String input, boolean streamed, boolean flat)   
            throws DatabaseUnitException, SQLException {   
        // 把 Document 转换为DBUnit的DataSet并解决中文编码问题   
        // is.setEncoding("GBK");   
        IDataSetProducer producer;   
        IDataSet dataSet;   
        if (flat)   
            producer = new FlatXmlProducer(new InputSource(input));   
        else  
            producer = new XmlProducer(new InputSource(input));   
        if (streamed)   
            dataSet = new StreamingDataSet(producer);   
        else  
            dataSet = new CachedDataSet(producer);   
  
        // 执行插入操作   
        DatabaseOperation.REFRESH.execute(connection, dataSet);   
    }   
  
	public static void cleanInsertData(IDatabaseConnection connection,   
            String input, boolean flat) throws DatabaseUnitException,   
            SQLException {   
        IDataSetProducer producer;   
        IDataSet dataSet;   
        if (flat)   
            producer = new FlatXmlProducer(new InputSource(input));   
        else  
            producer = new XmlProducer(new InputSource(input));   
  
        dataSet = new CachedDataSet(producer);   
  
        // 执行插入操作   
        DatabaseOperation.CLEAN_INSERT.execute(connection, dataSet);   
    }   
  
}   
 转载自:  http://huangxx.iteye.com/blog/133520
分享到:
评论

相关推荐

    dbunit-2.4.9 源码

    通过深入学习这些 API,开发者可以自定义数据导入导出格式,实现与特定数据库系统的兼容,或者扩展 DBUnit 的功能。同时,结合单元测试框架(如 JUnit 或 TestNG),可以编写高效且可靠的数据库测试用例。 在实际...

    如何使用DBUnit做数据备份恢复

    DBUnit 是一个开源的 Java 库,专门用于数据库测试,它提供了一种方式来管理和操作数据库的数据,包括数据的导入导出、备份和恢复。在本文中,我们将深入探讨如何利用 DBUnit 进行数据库的备份与恢复。 首先,我们...

    Dbunit数据库连接下载

    Dbunit 的核心功能包括数据导入导出、数据清理、数据填充以及数据比较。它可以将数据库状态定义为一种“数据集”,这种数据集可以是XML、CSV或者Excel格式的文件。这使得开发人员能够方便地创建和维护测试用例的数据...

    dbunit-2.2.3-prj.rar_DbUnit 2.2_dbunit_单元测试

    1. 数据导入导出:DbUnit 支持从XML文件导入和导出数据库数据,这样可以方便地创建和恢复数据库的特定状态。XML格式的数据集提供了结构化的数据表示,方便编写和维护。 2. 数据库操作:它提供了一系列API来填充...

    介绍dbunit的使用和原理,核心组件介绍

    与其他单元测试组件的比较,如JUnit本身,DbUnit专注于数据库的测试,提供了一套完整的框架来处理数据库数据的导入、导出和验证。这使得开发人员可以更方便地进行数据库驱动应用的测试,确保代码的正确性和数据的...

    dbunit帮助文档(HTML版)

    1. **数据导入/导出**:DBUnit可以将数据从数据库导出到XML或CSV文件,也可以将这些文件中的数据导入到数据库,这在数据迁移或备份时非常有用。 2. **数据比较**:DBUnit提供了断言机制,可以比较数据库的实际状态...

    tutorial-dbunit-example:一个 Maven 项目,演示了将 dbUnit 数据加载到数据库中

    dbUnit 支持多种数据格式(如 XML、CSV 和 Excel),可以方便地导入和导出数据集。 ### 2. Maven 集成 Maven 是 Java 项目管理和构建的常用工具,通过添加特定的依赖到项目的 `pom.xml` 文件,我们可以轻松地将 ...

    DBUnit 进行单元测试

    DBUnit 提供了一种结构化的方式来导入和导出数据库数据,使得测试环境可以被精确地设置和还原,避免了因为测试数据污染而引起的错误。 在进行单元测试时,DBUnit 允许我们将数据库的状态定义为“预期状态”(通常在...

    dbunit使用必需Jar包

    在Java应用程序的测试过程中,确保数据库状态的一致性是非常重要的,DBUnit 提供了这样的功能,它允许开发者导入和导出数据库数据,以进行精确的测试。 在使用 DBUnit 时,有几个必需的 Jar 包是必不可少的,这些 ...

    dbunit测试demo

    1. **DBUnit 概述**:DBUnit 提供了一套 XML 数据格式(如 FlatXML 和 IbatisXML),用于导入和导出数据库数据。它支持多种数据库,包括 Oracle、MySQL、SQL Server 等,并且与 JUnit 集成紧密,允许在测试用例执行...

    DBUnit_Project_Study.rar

    1. **数据集和数据导入导出**:DBUnit支持XML、CSV和Excel等多种格式的数据集。XML数据集通常用于定义测试用例中的预期数据库状态,它包含了行和列的数据,可以用来填充数据库表。DBUnit提供了`IDataReader`接口,...

    DBUnit使用文档

    这个 Ant 构建脚本包含了两个主要的目标:`import` 和 `export`,它们分别用于导入和导出数据库数据。 1. **导入数据(import)**: - `&lt;target name="import" depends="prepare"&gt;` 目标依赖于 `prepare` 目标,...

    dbunit入门实例

    1. **数据导入导出**:DbUnit 可以将 CSV、XML 或 Excel 文件中的数据导入到数据库表中,也可以将数据库中的数据导出为这些格式的文件。 2. **数据清理**:测试前,DbUnit 可以清空指定的表,确保每次测试都在一个...

    dbunit-2.1.zip_dbunit docs_zip

    DBUnit通过JUnit注解(如`@Before`和`@After`)来触发数据的导入和导出。 例如,以下是一个简单的DBUnit测试用例: ```java import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.xml.FlatXmlDataSet; ...

    DBUnit导数据报表名超长和MBCS字段被截断日志

    在IT行业中,数据库管理和数据导入导出是至关重要的任务,特别是在使用DBUnit这样的工具时。DBUnit是一款用于数据库测试的Java库,它允许开发者在测试前后对比数据库状态,确保数据处理的正确性。然而,当遇到...

    DBUnit最佳实践之使用ant命令

    DBUnit 提供了一套接口和类,使得测试用例可以方便地导入和导出数据库中的数据。它支持多种数据格式,如CSV、XML和Excel,使得测试数据的准备和清理变得更加便捷。DBUnit 可以帮助我们创建一致的测试环境,避免因为...

    DBUnit与H2内存数据库结合(单元测试)

    它提供了对数据导入、导出以及数据验证的强大支持,使得测试数据的准备和清理变得简单。DBUnit的数据格式包括XML、CSV、Flat-XML等,可以方便地加载和保存数据库状态。 H2则是一个轻量级的、完全开源的关系型数据库...

    junit4.10+dbunit2.4.7+httpunit+junitperf的jar包

    DbUnit允许用户导入和导出数据库数据到XML或CSV格式,通过`DataSet`的概念,可以在测试前后加载特定的数据状态。这样,即使测试对数据库进行了修改,也可以在测试结束后恢复原始状态。此外,DbUnit还支持各种操作,...

    dbunit-2.4.7

    DbUnit是一个用于数据库集成测试的Java工具,它允许开发者通过导入和导出结构化数据(通常以CSV或XML格式)来控制测试环境中的数据库状态。这有助于确保测试的隔离性和准确性,因为每次测试前后的数据库状态都可以被...

    主题:在Spring中结合Dbunit对Dao进行集成单元测试

    在Spring框架中,进行Dao层的集成单元测试时,常常会结合Dbunit工具来实现数据库相关的测试。Dbunit是一款强大的Java库,它扩展了JUnit,为数据库提供了结构化数据的导入和导出,使得测试更加方便和可靠。下面将详细...

Global site tag (gtag.js) - Google Analytics