package com.zt.generator.data; /** * Created by acer on 14-2-9. */ import org.springframework.jdbc.core.JdbcTemplate; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Map; public class DBUtil { public static boolean findTable(Connection conn, String tableName) { try { DatabaseMetaData dbm = conn.getMetaData(); String currentCatalog = conn.getCatalog(); String[] types = { "TABLE" }; ResultSet tabs = dbm.getTables(currentCatalog, null, tableName, types); if (tabs.next()) { return true; } } catch (Exception e) { e.printStackTrace(); } return false; } public static DataTable getColumnInfo(Connection conn, String tableName, boolean closeFlag) { try { DatabaseMetaData dbm = conn.getMetaData(); String currentCatalog = conn.getCatalog(); ResultSet rs = dbm.getColumns(currentCatalog, null, tableName, null); DataTable dt = new DataTable(rs); rs = dbm.getPrimaryKeys(currentCatalog, null, tableName); DataTable keyDt = new DataTable(rs); Map map = keyDt.toMap("Column_Name", "PK_Name"); dt.insertColumn("isKey"); for (int i = 0; i < dt.getRowCount(); i++) { DataRow dr = dt.getDataRow(i); if (map.containsKey(dr.getString("Column_Name"))) { dr.set("isKey", "Y"); } else { dr.set("isKey", "N"); } } return dt; } catch (Exception e) { e.printStackTrace(); } finally { if (closeFlag && conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } return null; } public static DataTable getSQLTypes(Connection conn, boolean closeFlag) { try { DatabaseMetaData dbm = conn.getMetaData(); ResultSet rs = dbm.getTypeInfo(); DataTable dt = new DataTable(rs); return dt; } catch (Exception e) { e.printStackTrace(); } finally { if (closeFlag && conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } return null; } public static String getDbType(JdbcTemplate jdbcTemplate) { String DBType = null; Connection conn = null; try { conn = jdbcTemplate.getDataSource().getConnection(); DatabaseMetaData md = conn.getMetaData(); DBType = md.getDatabaseProductName().toUpperCase(); } catch (SQLException e) { e.printStackTrace(); } finally { if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } return DBType; } public static String columnNameParser(String name) { String newNames = ""; if (name.indexOf("_") > 0) { // 驼峰法则 String[] names = name.toLowerCase().split("_"); newNames = names[0]; for (int j = 1; j < names.length; j++) { newNames += names[j].substring(0, 1).toUpperCase() + names[j].substring(1); } } else if (name.equals(name.toUpperCase())) { newNames = name.toLowerCase(); } else { newNames = name; } return newNames; } }