Java--Database--获取表及列信息

标签: Java

public interface DatabaseMetaData:关于整个数据库的综合信息。

  1. 由数据库连接获得数据库的综合信息:
DatabaseMetaData dbmd = con.getMetaData();
  1. 参数说明:"“检索没有目录的那些;”_“匹配一个字符;”%"匹配所有字符;null表示不以此来缩小搜索范围。
    catalog: 目录名称。必须匹配存储在数据库中的目录名称;
    schemaPattern: 模式名称模式。
    tableNamePattern: 表名模式。
    types: 表格类型的列表。
    columnNamePattern: 列名模式。

  2. 由数据库元信息获得表信息:

//getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types)
ResultSet tableRet =dbmd.getTables(dbName, null, null, new String[]{"TABLE"});
  1. 由数据库元信息获得列信息:
//getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) 
columnSet = dbmd.getColumns(dbName, null, tableName, null);

5.测试:首先调用getTables方法得到指定数据库名称的所有表,再遍历表获得每个字段的名称和类型。

public static void main(String[] args) {

	Connection con = DBManager.getConnection();		//调用DBManager的静态方法获得一个数据库连接
	
	DatabaseMetaData dbmd = null;
	ResultSet tableSet = null;
	ResultSet columnSet = null;
	
	/**
	* 测试主体代码
	*/
	try {
		 dbmd = con.getMetaData();
		 String dbName = "testdatabase";
		 tableSet = dbmd.getTables(dbName, null, null, new String[] {"TABLE"});
		 
		 while(tableSet.next()) {
			 String tableName = tableSet.getString("TABLE_NAME");
			 System.out.println(tableName);
			 
			 columnSet = dbmd.getColumns(dbName, null, tableName, null);
			 while(columnSet.next()) {
				 String columnName = columnSet.getString("COLUMN_NAME");
				 String typeName   = columnSet.getString("TYPE_NAME");
				 System.out.println(columnName+"\t"+typeName);
			 }
			 
			 System.out.println("----------------------------------------------");
		 }
		 
	/**
	* 关闭相关资源
	*/	 
	} catch (SQLException e) {
		e.printStackTrace();
	} finally {
		try {
			if(con!=null&&!con.isClosed()) {
				con.close();
			}
			
			if(tableSet!=null&&!tableSet.isClosed()) {
				tableSet.close();
			}
			
			if(columnSet!=null&&!columnSet.isClosed()){
				columnSet.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

测试结果

版权声明:本文为qq_40896594原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_40896594/article/details/105527100