利用JDBC获取表信息和字段信息

最近在做基于J2EE的异构数据库的迁移,以javabean为中介来存储表信息,为应对不同以及多种数据库的迁移,则需利用JDBC得到所有的表信息和字段信息,动态构建JavaBean。这里给出如何利用JDBC获取表信息和字段信息。

package com.hdu.edu.test;
/*
 * 尝试获取表名和字段名,以便动态建立javabean
 */
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;



public class TestGetTable {
	public static void main(String args[]){
		String DriverClass="oracle.jdbc.driver.OracleDriver";
		String DatabaseUrl="jdbc:oracle:thin:@localhost:1521:orcl";//orcl服务名或SID
		String DatabaseUser="scott";
		String DatabasePassword="Ckm123";
		Connection con=null;
		PreparedStatement psta=null;
		ResultSet res=null;
		String columnName;
		String columnType;
		try{
			con=SourceDatabase.getConnection(DriverClass, DatabaseUrl, DatabaseUser, DatabasePassword);
			DatabaseMetaData dm=con.getMetaData();
			ResultSet tableSet=dm.getTables(con.getCatalog(), "SCOTT", 	null, new String[]{"TABLE"});//
			while(tableSet.next()) {//循环输出数据库中的表名
			    System.out.println(tableSet.getString("TABLE_NAME"));
			}
			
			
			ResultSet colRet =dm.getColumns(con.getCatalog(), "SCOTT", "EMP", null);
			while(colRet.next()) {//循环输出EMP表的列名以及其他信息
				columnName = colRet.getString("COLUMN_NAME");
				columnType = colRet.getString("TYPE_NAME");
				int datasize = colRet.getInt("COLUMN_SIZE");
				int digits = colRet.getInt("DECIMAL_DIGITS");
				int nullable = colRet.getInt("NULLABLE");  
				System.out.println(columnName+" "+columnType+" "+datasize+" "+digits+" "+nullable);
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			try{
				if(res!=null)
					res.close();
				if(psta!=null)
					psta.close();
				if(con!=null)
					con.close();
			}catch(Exception e){
				e.printStackTrace();
			}
		}
	}
}



猜你喜欢

转载自blog.csdn.net/lengxiaomo123/article/details/51097634