前一段时间做大数据产品时用到了一部分通过Connection连接获取mysql数据库的元数据,现在把部分代码贴下来,以备不时之需
1、通过Connection连接获取数据库中所有的表
@Test
public void test1() throws SQLException {
Connection conn = //... some exists Connection
DatabaseMetaData metaData = conn.getMetaData();
ResultSet itr = metaData.getTables(null, "%","%",new String[]{"TABLE"});
while(itr.next()){
String TABLE_CAT = itr.getString("TABLE_CAT");
String TABLE_SCHEM = itr.getString("TABLE_SCHEM");
String TABLE_NAME = itr.getString("TABLE_NAME");
String TABLE_TYPE = itr.getString("TABLE_TYPE");
String REMARKS = itr.getString("REMARKS");
System.out.println(TABLE_CAT+" , "+TABLE_SCHEM+" , "+TABLE_NAME+" , "+TABLE_TYPE+" , "+REMARKS+" , , , , , ");
}
}
其中:TABLE_NAME代表表名
2、通过Connection连接获取某个表的字段
@Test
public void test2() throws SQLException {
Connection conn = //... some exists Connection
DatabaseMetaData metaData = conn.getMetaData();
ResultSet data_filter = metaData.getColumns(conn.getCatalog(),"%","lyh_test_data",null);
while(data_filter.next()){
int one = data_filter.getInt("DATA_TYPE");
int two = data_filter.getInt("COLUMN_SIZE");
String three = data_filter.getString("COLUMN_NAME");
System.out.println(one+" "+two+" "+three);
}
}
其中: lyzx_test_data是我的测试表名 COLUMN_NAME代表字段名,COLUMN代表字段大小 DATA_TYPE代表字段类型