zoukankan      html  css  js  c++  java
  • (转)获取指定数据库和用户的所有表表名

    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DatabaseMetaData;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Properties;
    
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import org.loushang.persistent.jdbc.datasource.PropertyDataSourceFactoryImpl;
    
    public class DataBaseUtil {
     private static Log logger = LogFactory.getLog(DataBaseUtil.class);
     
     public static final String DATASOURCE_FILENAME = "datasource.properties"; //连接数据库的数据源文件
     public static final String DATASOURCE_URL = "dataSource.url";             //数据源文件里url的key
     public static final String DATASOURCE_USERNAME = "dataSource.username";   //数据源文件里用户名的key
     
     /**
      * 读取配置文件信息
      * @return Properties 配置文件信息
      */
     public static Properties getProperties() {
      //InputStream in = ClassLoader.getSystemResourceAsStream(DATASOURCE_FILENAME);
      
      InputStream in = PropertyDataSourceFactoryImpl.class.getClassLoader()
        .getResourceAsStream(DATASOURCE_FILENAME);
      if (in == null) {
       in = Thread.currentThread().getContextClassLoader().getResourceAsStream(DATASOURCE_FILENAME);
       if(in == null){
        logger.warn("Can not find the  datasource config file 'datasource.properties'.");
       }
      }
      Properties properties = new Properties();
      try {
       properties.load(in);
      } catch (IOException e) {
       logger.error("Error occurred when loading datasource config file.", e);
      }
      return properties;
     }
     /**
      * 读取配置文件获取连接数据库的数据库名
      * @return String 数据库名
      */
     public static String getDatabaseName() {
      String databaseName = "";  
      Properties p = getProperties();
      String database = p.getProperty(DATASOURCE_URL);
      int startIndex = database.lastIndexOf(":");
      databaseName = database.substring(startIndex+1, database.length());  
      return databaseName;
     }
     /**
      * 读取配置文件获取连接数据库的用户名
      * @return String 用户名
      */
     public static String getUserOfDatabase() {
      String user = "";
      Properties p = getProperties();
      user = p.getProperty(DATASOURCE_USERNAME);
      return user;
     }
     /**
      * 获取指定数据库和用户的所有表名
      * @param conn 连接数据库对象
      * @param user 用户
      * @param database 数据库名
      * @return
      */
     public static List getAllTableNames(Connection conn, String user, String database) {
      List tableNames = new ArrayList();
      if (conn != null) {
       try {
        DatabaseMetaData dbmd = conn.getMetaData();
        // 表名列表
        ResultSet rest = dbmd.getTables(database, null, null, new String[] { "TABLE" });
        // 输出 table_name
        while (rest.next()) {
         String tableSchem = rest.getString("TABLE_SCHEM");
         if (user.equalsIgnoreCase(tableSchem)) {
          tableNames.add(rest.getString("TABLE_NAME"));
         }
        }
       } catch (SQLException e) {
        e.printStackTrace();
       }
      }
      return tableNames;
     }
      public static void main(String [] args) {
      Connection conn = null;     
         try{
         /* String url="jdbc:oracle:thin:@10.*.*.*:1521:***";
             Class.forName("oracle.jdbc.driver.OracleDriver");
             conn = DriverManager.getConnection(url , "*" , "*");*/
      
         DataSource datasource = DataSourceFactory.defaultFactory.getDataSource("dataSource");
         conn = datasource.getConnection();
      } catch (SQLException e1) {
       e1.printStackTrace();
      } catch (ClassNotFoundException e) {
       e.printStackTrace();
      }
      List tables = getAllTableNames(conn, getUserOfDatabase(), getDatabaseName());
      System.out.println(tables.size());
      
     }
    }
  • 相关阅读:
    Sql批处理语句
    使用waitfor 语句
    将文件分对话拆分
    集合
    用户登录系统
    fromkeys() keys() values() items()
    通讯录程序
    字符串分割方法split()函数
    装逼的本质就是把同一东西说成不同的事物
    字典
  • 原文地址:https://www.cnblogs.com/xing901022/p/3863910.html
Copyright © 2011-2022 走看看