
jdbc到了版本3以后加入元数据的功能。有了jdbc元数据就可以很方便的获取数据库相关的信息。如果大家了解这项功能,就会发现操作数据库的时候会更得心应手,同时也可以开发出比以前更加自动化的程序。下面来看一下,DatabaseMetaData元数据的具体使用。
/**
* 得到指定连接数据库中表列表
* @param connection 连接对象
* @return 当前数据库的表列表
* @throws Exception
*/
public static List<String> showTables(Connection connection) throws Exception {
DatabaseMetaData meta = connection.getMetaData(); //获取数据库连接的元数据
/*查询连接的所有Table(如果需要查询视图等,可以在最后的数组中添加VIEW...,依此类推)
获取到的数据是以ResultSet形式返回*/
ResultSet rsTable = meta.getTables(null, null, null, new String[] { "TABLE" });
//创建集合,用于保存表名
List<String> list = new ArrayList<String>();
while (rsTable.next()) {
list.add(rsTable.getString(3)); //第三列就是表名称
}
return list;
}
/**
* 获得主键信息
* @param connection 连接对象
* @param tableName 表名
* @return 当前表中主键集合(可能有联合主键)
* @throws Exception
*/
public static List<String> getPrimaryKeys(Connection connection, String tableName) throws Exception {
ArrayList<String> keyList = new ArrayList<String>();
DatabaseMetaData meta = connection.getMetaData();
ResultSet rsKey = meta.getPrimaryKeys(null, null, tableName); //获取指定表的主键列信息
while (rsKey.next())
keyList.add(rsKey.getString(4));//第4列就是主键名
return keyList;
}
/**
* 获得外键信息
* @param connection 连接对象
* @param tableName 表名
* @return 外键信息
* @throws Exception
*/
public static List<String> getImportedKeys(Connection connection, String tableName) throws Exception {
ArrayList<String> keyList = new ArrayList<String>();
DatabaseMetaData meta = connection.getMetaData();
//得到外键结果集
ResultSet rsKey = meta.getImportedKeys(null, null, tableName);
while (rsKey.next())
keyList.add(rsKey.getString(8));//得到外键名
return keyList;
}
/**
* 获得表中列信息
* @param connection 连接对象
* @param tableName 表名
* @return 表中列集合
* @throws Exception
*/
public static List<String> getColumns(Connection connection, String tableName) throws Exception {
ArrayList<String> keyList = new ArrayList<String>();
DatabaseMetaData metaData = connection.getMetaData();
//得到列的结果集
ResultSet rs = metaData.getColumns(null, null, tableName, null);
while(rs.next()){
keyList.add(rs.getString(4));//得到列名
}
return keyList;
}