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

📄 databasemetadata.java

📁 用Java实现的23个常用设计模式源代码
💻 JAVA
字号:
//$Id: DatabaseMetadata.java,v 1.1 2003/06/16 03:25:00 oneovthafew Exp $package net.sf.hibernate.tool.hbm2ddl;import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.HashMap;import java.util.HashSet;import java.util.Map;import java.util.Set;import net.sf.hibernate.HibernateException;import net.sf.hibernate.dialect.Dialect;/** * JDBC database metadata * @author Christoph Sturm, Teodor Danciu */public class DatabaseMetadata {	private final Map tables = new HashMap();	private final Set sequences = new HashSet();		private DatabaseMetaData meta;		public DatabaseMetadata(Connection connection, Dialect dialect) throws SQLException {		meta = connection.getMetaData();		initSequences(connection, dialect);	}		public TableMetadata getTableMetadata(String name) throws HibernateException {		TableMetadata table = null;				if (name!=null) {						table = (TableMetadata) tables.get( name.toUpperCase() );			if (table==null) {				String[] types = {"TABLE"};				ResultSet rs = null;						try {					try {						rs = meta.getTables(null, "%", name.toUpperCase(), types);										while ( rs.next() ) {							if ( name.equalsIgnoreCase( rs.getString("TABLE_NAME") ) ) {								table = new TableMetadata(rs, meta);								tables.put( name.toUpperCase(), table );								break;							}						}					}					finally {						if (rs!=null) rs.close();					}				}				catch(SQLException e) {					throw new HibernateException(e);				}			}		}				return table;	}	private void initSequences(Connection connection, Dialect dialect) throws SQLException {		String sql = dialect.getQuerySequencesString();				if (sql==null) return;				Statement statement = null;		ResultSet rs = null;		try {			statement = connection.createStatement();			rs = statement.executeQuery(sql);						while ( rs.next() ) sequences.add( rs.getString(1).toUpperCase() );		} 		finally {			if (rs!=null) rs.close();			if (statement!=null) statement.close();		}	}		public boolean isSequence(Object key) {		return key instanceof String && sequences.contains( ( (String) key ).toUpperCase() );	}	public boolean isTable(Object key) throws HibernateException {		return key instanceof String && ( getTableMetadata( (String) key ) != null );	}}

⌨️ 快捷键说明

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