最近在做重构数据库表管理工作,今天遇到一个关于[给定表名称]取它的主键并进行其它关联操作.
- public String[] getTablePK(String tableCodes) throws Exception {
- String[] resultArray = null;
- Connection conn = null;
- DatabaseMetaData dbmd = null;
- ResultSet rs = null;
- try {
- /** 查了下API,ResultSet 会包含五列,分别是:
- * TABLE_CAT 表目录一般会是NULL
- * TABLE_SCHEM 表索引,主键所在表的架构,通常会设置为dbmd.getUserName()
- * TABLE_NAME 包含主键的表名称
- * COLUMN_NAME 主键名称
- * KEY_SEQ 主键序列
- * PK_NAME 约束名称
- */
- conn = dataSource.getConnection();
- dbmd = conn.getMetaData();
- rs = dbms.getPrimaryKeys(null, null, tableCodes);
- String tempPK = "";
- while (rs.next()) {
- tempPK = rs.getString("COLUMN_NAME") + ",";
- }
- resultArray = tempPK.split(",");
- if (tempPK.length() < 1) {
- resultArray = null;
- }
- } catch(SQLException sqle) {
- logger.error(sqle);
- } finally {
- if (rs != null) {
- try{
- rs.close();
- } catch(SQLException sqle) {
- logger.error(sqle);
- }
- }
- if (conn != null) {
- try {
- } catch(SQLException sqle) {
- logger.error(sqle);
- }
- }
- }
- return resultArray;
- }