亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? databasetablemetadata.java

?? 采用 Java 編寫的數據庫系統單元測試程序。
?? JAVA
字號:
/*
 *
 * The DbUnit Database Testing Framework
 * Copyright (C)2002-2004, DbUnit.org
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 */

package org.dbunit.database;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import org.dbunit.dataset.*;
import org.dbunit.dataset.filter.IColumnFilter;
import org.dbunit.dataset.datatype.DataType;
import org.dbunit.dataset.datatype.IDataTypeFactory;

import java.sql.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * @author Manuel Laflamme
 * @version $Revision: 629 $
 * @since Mar 8, 2002
 */
public class DatabaseTableMetaData extends AbstractTableMetaData
{

    /**
     * Logger for this class
     */
    private static final Logger logger = LoggerFactory.getLogger(DatabaseTableMetaData.class);

    private final String _tableName;
    private final IDatabaseConnection _connection;
    private Column[] _columns;
    private Column[] _primaryKeys;

    DatabaseTableMetaData(String tableName, IDatabaseConnection connection
            )
    {
        _tableName = tableName;
        _connection = connection;
    }

    public static ITableMetaData createMetaData(String tableName,
            ResultSet resultSet, IDataTypeFactory dataTypeFactory)
            throws DataSetException, SQLException
    {
        logger.debug("createMetaData(tableName=" + tableName + ", resultSet=" + resultSet + ", dataTypeFactory="
                + dataTypeFactory + ") - start");

        ResultSetMetaData metaData = resultSet.getMetaData();
        Column[] columns = new Column[metaData.getColumnCount()];
        for (int i = 0; i < columns.length; i++)
        {
            int columnType = metaData.getColumnType(i + 1);
            String columnTypeName = metaData.getColumnTypeName(i + 1);
            DataType dataType = dataTypeFactory.createDataType(
                    columnType, columnTypeName);
            columns[i] = new Column(
                    metaData.getColumnName(i + 1),
                    dataType,
                    columnTypeName,
                    Column.nullableValue(metaData.isNullable(i + 1)));
        }

        return new DefaultTableMetaData(tableName, columns);
    }

    public static ITableMetaData createMetaData(String tableName,
            ResultSet resultSet, IDatabaseConnection connection)
            throws SQLException, DataSetException
    {
        logger.debug("createMetaData(tableName=" + tableName + ", resultSet=" + resultSet + ", connection="
                + connection + ") - start");

        DatabaseConfig config = connection.getConfig();
        IDataTypeFactory typeFactory = (IDataTypeFactory)config.getProperty(
                DatabaseConfig.PROPERTY_DATATYPE_FACTORY);
        return createMetaData(tableName, resultSet, typeFactory);
    }

    private String[] getPrimaryKeyNames() throws SQLException
    {
        logger.debug("getPrimaryKeyNames() - start");

        // qualified names support
        String schemaName = _connection.getSchema();
        String tableName = _tableName;
        int index = tableName.indexOf(".");
        if (index >= 0)
        {
            schemaName = tableName.substring(0, index);
            tableName = tableName.substring(index + 1);
        }

        Connection connection = _connection.getConnection();
        DatabaseMetaData databaseMetaData = connection.getMetaData();
        ResultSet resultSet = databaseMetaData.getPrimaryKeys(
                null, schemaName, tableName);

        List list = new ArrayList();
        try
        {
            while (resultSet.next())
            {
                String name = resultSet.getString(4);
                int sequence = resultSet.getInt(5);
                list.add(new PrimaryKeyData(name, sequence));
            }
        }
        finally
        {
            resultSet.close();
        }

        Collections.sort(list);
        String[] keys = new String[list.size()];
        for (int i = 0; i < keys.length; i++)
        {
            PrimaryKeyData data = (PrimaryKeyData)list.get(i);
            keys[i] = data.getName();
        }

        return keys;
    }

    private class PrimaryKeyData implements Comparable
    {

        /**
         * Logger for this class
         */
        private final Logger logger = LoggerFactory.getLogger(PrimaryKeyData.class);

        private final String _name;
        private final int _index;

        public PrimaryKeyData(String name, int index)
        {
            _name = name;
            _index = index;
        }

        public String getName()
        {
            logger.debug("getName() - start");

            return _name;
        }

        public int getIndex()
        {
            logger.debug("getIndex() - start");

            return _index;
        }

        ////////////////////////////////////////////////////////////////////////
        // Comparable interface

        public int compareTo(Object o)
        {
            logger.debug("compareTo(o=" + o + ") - start");

            PrimaryKeyData data = (PrimaryKeyData)o;
            return getIndex() - data.getIndex();
        }
    }

    ////////////////////////////////////////////////////////////////////////////
    // ITableMetaData interface

    public String getTableName()
    {
        logger.debug("getTableName() - start");

        return _tableName;
    }

    public Column[] getColumns() throws DataSetException
    {
        logger.debug("getColumns() - start");

        if (_columns == null)
        {
            try
            {
                // qualified names support
                String schemaName = _connection.getSchema();
                String tableName = _tableName;
                int index = tableName.indexOf(".");
                if (index >= 0)
                {
                    schemaName = tableName.substring(0, index);
                    tableName = tableName.substring(index + 1);
                }

                Connection jdbcConnection = _connection.getConnection();
                DatabaseMetaData databaseMetaData = jdbcConnection.getMetaData();
                ResultSet resultSet = databaseMetaData.getColumns(
                        null, schemaName, tableName, "%");

                try
                {
                    DatabaseConfig config = _connection.getConfig();
                    IDataTypeFactory dataTypeFactory = (IDataTypeFactory)config.getProperty(
                            DatabaseConfig.PROPERTY_DATATYPE_FACTORY);
                    boolean datatypeWarning = config.getFeature(
                            DatabaseConfig.FEATURE_DATATYPE_WARNING);

                    List columnList = new ArrayList();
                    while (resultSet.next())
                    {
                        String columnName = resultSet.getString(4);
                        int sqlType = resultSet.getInt(5);
                        String sqlTypeName = resultSet.getString(6);
//                        int columnSize = resultSet.getInt(7);
                        int nullable = resultSet.getInt(11);

                        // Convert SQL type to DataType
                        DataType dataType =
                                dataTypeFactory.createDataType(sqlType, sqlTypeName);
                        if (dataType != DataType.UNKNOWN)
                        {
                            Column column = new Column(columnName, dataType,
                                    sqlTypeName, Column.nullableValue(nullable));
                            columnList.add(column);
                        }
                        else if (datatypeWarning)
                        {
                            System.out.println(
                                    "WARNING - " + tableName + "." + columnName +
                                    " data type (" + sqlType + ", ?" + sqlTypeName +
                                    "?) not recognized and will be ignored. See FAQ for more information.");
                        }
                    }

                    if (columnList.size() == 0)
                    {
                        throw new NoColumnsFoundException(tableName);
                    }

                    _columns = (Column[])columnList.toArray(new Column[0]);
                }
                finally
                {
                    resultSet.close();
                }
            }
            catch (SQLException e)
            {
                throw new DataSetException(e);
            }
        }
        return _columns;
    }

    public Column[] getPrimaryKeys() throws DataSetException
    {
        logger.debug("getPrimaryKeys() - start");

        if (_primaryKeys == null)
        {
            try
            {
                DatabaseConfig config = _connection.getConfig();
                IColumnFilter primaryKeysFilter = (IColumnFilter)config.getProperty(
                        DatabaseConfig.PROPERTY_PRIMARY_KEY_FILTER);
                if (primaryKeysFilter != null)
                {
                    _primaryKeys = getPrimaryKeys(getTableName(), getColumns(),
                            primaryKeysFilter);
                }
                else
                {
                    _primaryKeys = getPrimaryKeys(getColumns(),
                            getPrimaryKeyNames());
                }
            }
            catch (SQLException e)
            {
                throw new DataSetException(e);
            }
        }
        return _primaryKeys;
    }

    ////////////////////////////////////////////////////////////////////////////
    // Object class
    public String toString()
    {
        logger.debug("toString() - start");

        try
        {
            String tableName = getTableName();
            String columns = Arrays.asList(getColumns()).toString();
            String primaryKeys = Arrays.asList(getPrimaryKeys()).toString();
            return "table=" + tableName + ", cols=" + columns + ", pk=" + primaryKeys + "";
        }
        catch (DataSetException e)
        {
            return super.toString();
        }
    }
}










?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜在线免费| 欧亚洲嫩模精品一区三区| 不卡视频一二三| 666欧美在线视频| 久久久久久黄色| 丝袜亚洲另类丝袜在线| www.亚洲色图.com| 日韩欧美国产精品一区| 一区二区成人在线视频| 国产东北露脸精品视频| 91麻豆精品国产自产在线观看一区| 国产精品毛片大码女人| 韩国毛片一区二区三区| 日韩免费看网站| 日韩高清不卡一区二区三区| 一本到高清视频免费精品| 欧美国产一区在线| 国产剧情一区二区三区| 欧美一二三区在线| 视频一区免费在线观看| 欧美乱妇一区二区三区不卡视频| 最新国产の精品合集bt伙计| 91精品国产91热久久久做人人| 国产精品国产三级国产a| 国产最新精品免费| 欧美成人乱码一区二区三区| 日本不卡不码高清免费观看| 欧美乱熟臀69xxxxxx| 亚洲一区欧美一区| 一本色道久久综合亚洲aⅴ蜜桃 | 中文字幕一区二区三区视频| 日韩成人免费电影| 欧美性色黄大片| 欧美激情资源网| 国产精品综合网| 精品乱人伦小说| 青青草国产精品亚洲专区无| 欧美三级电影在线看| 亚洲欧美乱综合| 成人黄动漫网站免费app| 久久久激情视频| 国产综合色精品一区二区三区| 91精品婷婷国产综合久久| 亚洲美女屁股眼交| 99精品一区二区| 国产精品久久久久永久免费观看 | 欧美一区二区视频观看视频| 久久精品这里都是精品| 国产在线精品视频| 26uuu精品一区二区| 激情综合色综合久久综合| 日韩一区二区在线看片| 男女男精品视频| 欧美一区二区三区免费| 日本女人一区二区三区| 日韩一级高清毛片| 激情五月播播久久久精品| 久久综合狠狠综合| 福利电影一区二区三区| 成人免费小视频| 色婷婷综合激情| 首页欧美精品中文字幕| 欧美mv日韩mv国产| 国产一区二三区| 精品不卡在线视频| 成人美女在线视频| 亚洲欧美一区二区三区国产精品| 在线观看国产一区二区| 日本亚洲电影天堂| 中文字幕不卡三区| 欧美日韩国产综合视频在线观看| 午夜一区二区三区视频| 欧美成人欧美edvon| 国产精品主播直播| 国产精品国产三级国产aⅴ原创| 91在线porny国产在线看| 午夜私人影院久久久久| 欧美变态tickling挠脚心| 粉嫩绯色av一区二区在线观看| 中文字幕中文字幕一区| 日韩欧美色电影| 91视视频在线观看入口直接观看www | 91.麻豆视频| 国产一区二区三区免费在线观看| 国产精品久久久久7777按摩| 色噜噜夜夜夜综合网| 亚洲第一电影网| 一本色道亚洲精品aⅴ| 国产福利一区二区三区在线视频| 亚洲欧美一区二区不卡| 精品嫩草影院久久| 色综合久久中文综合久久97 | 中文av字幕一区| 欧美疯狂做受xxxx富婆| 国产成人av电影在线| 亚洲 欧美综合在线网络| 国产午夜精品久久久久久久| 欧美日本在线一区| 波多野结衣视频一区| 奇米精品一区二区三区四区 | 日韩欧美国产一区二区在线播放| 成人精品高清在线| 视频一区在线视频| 亚洲欧美成人一区二区三区| 精品国产99国产精品| 欧美中文字幕亚洲一区二区va在线| 粉嫩av一区二区三区在线播放| 一区二区三区免费| 国产精品国产三级国产aⅴ无密码| 日韩美一区二区三区| 91黄色免费版| 97精品电影院| 国产激情视频一区二区在线观看| 视频一区二区三区在线| 一区二区三区久久| 亚洲欧洲成人av每日更新| 精品国产一区二区精华| 在线不卡欧美精品一区二区三区| av在线免费不卡| 国产成人精品影院| 精品影院一区二区久久久| 五月天丁香久久| 亚洲国产一区二区a毛片| 亚洲黄色小视频| 亚洲最新视频在线观看| 国产精品第五页| 久久久影视传媒| 欧美一二三区在线| 日韩欧美国产成人一区二区| 日韩久久免费av| 日韩一区二区三区在线| 6080日韩午夜伦伦午夜伦| 制服丝袜一区二区三区| 欧美日韩一卡二卡三卡 | 欧洲一区二区av| 欧美性色欧美a在线播放| 91成人免费网站| 欧美日韩成人在线| 欧美精品一二三| 91精品婷婷国产综合久久性色 | 成人美女视频在线看| 成人免费高清在线观看| 国产不卡在线视频| 粉嫩蜜臀av国产精品网站| 粉嫩av一区二区三区| www.欧美日韩| 色播五月激情综合网| 欧美日韩精品电影| 欧美一级夜夜爽| 国产日韩欧美制服另类| 久久久电影一区二区三区| 欧美一区二区三区免费| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 国产v综合v亚洲欧| 北岛玲一区二区三区四区| 国产一区二区毛片| 99久久精品国产网站| 欧美日韩久久一区| 欧美一级二级三级乱码| 国产精品丝袜一区| 亚洲乱码国产乱码精品精98午夜 | 久久一区二区三区四区| 国产欧美精品一区二区三区四区 | 成人综合日日夜夜| 色偷偷88欧美精品久久久| 欧美一区二区播放| 国产精品久久影院| 日本欧美一区二区在线观看| 国产成人精品综合在线观看| 欧美吞精做爰啪啪高潮| wwww国产精品欧美| 亚洲一区视频在线观看视频| 五月天网站亚洲| 国产成人精品免费在线| 色成人在线视频| 久久久99久久| 日日欢夜夜爽一区| 99国产精品视频免费观看| 日韩午夜精品电影| 日韩理论片网站| 激情小说亚洲一区| 欧美日韩亚洲综合一区二区三区| 国产亚洲欧美在线| 日韩黄色免费网站| 91福利国产成人精品照片| 国产日产欧产精品推荐色| 日韩电影在线观看一区| 色噜噜狠狠成人网p站| 91精品国产黑色紧身裤美女| 亚洲美女偷拍久久| 国产精品99久久久久久宅男| 欧美在线视频不卡| 中文av字幕一区| 国产麻豆精品在线观看| 日韩精品一区二| 日韩高清国产一区在线| 欧美午夜精品理论片a级按摩| 国产精品国产自产拍高清av | 精品国产a毛片| 奇米精品一区二区三区在线观看|