⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbinfoimpl.java

📁 以前写的通用数据库接口
💻 JAVA
字号:
package util.database;

import java.sql.*;
import java.util.*;

/**
 * DBInfoImpl,得到数据库的基本信息
 *
 * @author Michael Zeng
 * @version 1.0 September 18, 2002
 */
public class DBInfoImpl implements DBInfo
{
	private Connection conn = null;
	private DatabaseMetaData dbmd = null;
	private ArrayList alTables = null;
	private HashMap hmTableColumns = null;

    DBInfoImpl(){}

    /**
     * 指定一个数据库连接
     *
     * @param conn 给定的数据库连接
     */
	public void setConnection(Connection conn)
	{
    	this.conn = conn;
    }

	/**
	 * 返回一个数据库中的所有表的名称
	 *
	 * @return String[] 一个数据库中的所有表的名称
     *
     * @throws Exception
	 */
	public String[] getTables() throws Exception
	{
		//先检查是否需要查询数据库
        if(alTables == null)
        {
            alTables = new ArrayList();

            if(dbmd == null) setDBMD();
            ResultSet rsTables = dbmd.getTables(null, null,null, new String[] {"TABLE"});
            while (rsTables.next())
            {
                alTables.add(rsTables.getString("TABLE_NAME"));
            }// end of while
        }
        if(alTables.size() == 0)    return new String[0];
	    return (String[])alTables.toArray(new String[1]);
	}

	/**
	 * 返回数据库中某个特定表的所有列的名称
	 *
	 * @param table 指定的表名称
	 * @return String[] 所有列的名称
     *
     * @throws Exception
	 */
	public String[] getColumns(String table) throws Exception
	{
    	if (hmTableColumns == null) hmTableColumns = new HashMap();
    	ArrayList alColumns = new ArrayList();

        //先检查是否需要查询数据库
        if (!hmTableColumns.containsKey(table)) getTableColumns(table);

        ResultSet rsColumns = (ResultSet)hmTableColumns.get(table);
        while (rsColumns.next())
        {
            alColumns.add(rsColumns.getString("COLUMN_NAME"));
        }// end of while
        if(alColumns.size() == 0)   return new String[0];
	    return (String[])alColumns.toArray(new String[1]);
	}

	/**
     * 返回指定数据库表中某个指定列的类型
     *
     * @param table 指定数据库表
     * @param column 指定的列
     * @return 列的类型,出现异常则返回null
     *
     * @throws Exception
     */
    public String getColumnType(String table, String column) throws Exception
	{
    	if (hmTableColumns == null) hmTableColumns = new HashMap();
    	String columnType = null;

        //先检查是否需要查询数据库
        if (!hmTableColumns.containsKey(table)) getTableColumns(table);

        ResultSet rsColumns = (ResultSet)hmTableColumns.get(table);
        rsColumns.beforeFirst();
        while (rsColumns.next())
        {
            if(column.equalsIgnoreCase(rsColumns.getString("COLUMN_NAME")))
            {
                columnType = rsColumns.getString("TYPE_NAME");
                break;
            }
        }// end of while

    	return columnType;
    }


	/**
     * 给定名称的数据表是否已经存在
     *
     * @param table 表名称
     * @return 如果已经存在,返回true
     *
     * @throws Exception
     */
	public boolean isTableExist(String table) throws Exception
	{
		//先检查是否需要查询数据库
    	if(alTables == null) this.getTables();

    	if(alTables.contains(table))
    		return true;
    	else
    		return false;
    }

	/**
     * 内部使用的helper方法,设置元数据
     *
     *@throws SQLException
     */
	private void setDBMD() throws SQLException
	{
    	dbmd = conn.getMetaData();
    }

    /**
     * helper方法,取得一个指定表的列信息,存放在一个HashMap中
     *
     * @param table 指定的表名称
     *
     * @throws Exception
     */
    private void getTableColumns(String table) throws Exception
    {
        if(dbmd == null) setDBMD();
        ResultSet rsColumns = dbmd.getColumns(null, null, table, null);
        hmTableColumns.put(table, rsColumns);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -