<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-112  評論-73  文章-0  trackbacks-0
    用DBUnit 做數據備份恢復工具

    DBunit(http://dbunit.sourceforge.net/ )是一個非常好的數據庫unit系列工具.
    一般都是用它在測試的時候管理數據庫。我們可以發揮一下,用它做一個備份和恢復的數據庫管理工具。

    以mysql為例,正好現在還沒有找一個好用的mysql備份和恢復工具。這個是在代碼中管理不是用ant的方式。

    主要是用到核心組件:IDatabaseConnection、IDataSet、DatabaseOperation

    先看代碼:
       /**
         * 導出數據到指定文件
         * @param file 一個標準的java.io.File
         * @param connection  一個標準的java.sql.Connection
         * @throws org.dbunit.DatabaseUnitException
         */
        public static void exportRoom(File file, Connection connection) throws DatabaseUnitException, IOException {
            IDatabaseConnection databaseConnection = new DatabaseConnection(connection);
            QueryDataSet dataSet = new QueryDataSet(databaseConnection);
            dataSet.addTable("room");
            Writer writer = new FileWriter(file);
            XmlDataSetWriter w = new XmlDataSetWriter(writer);
            w.write(dataSet);
            writer.flush();
            writer.close();
        }
    在這個方法中指定了一個表名"room",如果有多個表可以通過參數或其他的方式按照這種方式繼續增加。這個文件是XML格式的。具體格式說明或其他格式參見http://dbunit.sourceforge.net/components.html#databaseconnection

        /**
         * 導入數據到ROOM表
         * @param file  一個標準的java.io.File
         * @param connection 一個標準的java.sql.Connection
         */
        public static void importRoom(File file, Connection connection) throws DatabaseUnitException, IOException, SQLException {
            IDataSetProducer dataSetProducer = new XmlProducer(FileHelper.createInputSource(file));
            IDataSet dataSet = new CachedDataSet(dataSetProducer);
            IDatabaseConnection databaseConnection = new DatabaseConnection(connection);
            DatabaseOperation operation = DatabaseOperation.CLEAN_INSERT;
            DatabaseOperation.TRANSACTION(operation);
            operation.execute(databaseConnection, dataSet);
            DatabaseOperation.CLOSE_CONNECTION(operation);
        }
    這個方法可以把上面生成的XML文件導入到數據庫中,如果是其他格式的文件只需要更換IDataSetProducer的實現類就可以了。具體格式請參見APIDOC
    在這個方法里使用了事務控制,保證數據的一致性。

    有了這兩個方法我們就可以再發揮一下,然后為客戶提供一個備份恢復數據的工具了。如果再加入壓縮文件的支持就更加完美了。





    posted on 2009-03-14 16:33 Libo 閱讀(2011) 評論(0)  編輯  收藏 所屬分類: 數據庫
    主站蜘蛛池模板: 四虎成人精品永久免费AV| 猫咪免费人成网站在线观看入口| 久久久久久av无码免费看大片| 四虎影视免费永久在线观看| 国产成人亚洲午夜电影| 精品少妇人妻AV免费久久洗澡| 亚洲精品亚洲人成在线| 女人18毛片水真多免费播放| 色偷偷尼玛图亚洲综合| 国产成人精品免费视频大全五级| 亚洲av纯肉无码精品动漫| 国产成人精品高清免费| 人人公开免费超级碰碰碰视频| 亚洲性在线看高清h片| 91视频免费观看高清观看完整| 亚洲国产无套无码av电影| 一级做a爰全过程免费视频| 亚洲色图视频在线观看| 一个人免费观看www视频在线| 国产精品亚洲四区在线观看| 在线免费观看视频你懂的| 老司机福利在线免费观看| 亚洲一区二区三区在线观看精品中文 | 久久国产亚洲观看| 久久久久成人精品免费播放动漫| 亚洲精品高清国产麻豆专区| 免费视频中文字幕| 国产精品美女免费视频观看| 亚洲国产高清人在线| 在线视频精品免费| 美女扒开屁股让男人桶爽免费| 亚洲人AV永久一区二区三区久久| 国产色无码精品视频免费| 亚洲免费视频观看| 亚洲精品一级无码鲁丝片| 99精品视频在线观看免费专区 | 少妇中文字幕乱码亚洲影视 | 久久精品国产免费观看| 亚洲av日韩专区在线观看| 亚洲色欲一区二区三区在线观看| 30岁的女人韩剧免费观看|