(转)获取指定数据库和用户的所有表表名

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());

 }
}

(转)获取指定数据库和用户的所有表表名,布布扣,bubuko.com

时间: 2024-12-06 21:36:29

(转)获取指定数据库和用户的所有表表名的相关文章

【Oracle】【18】获取数据库当前用户下所有表名和表名的注释

SELECT A.TABLE_NAME, B.COMMENTS FROM USER_TABLES A, USER_TAB_COMMENTS B WHERE A.TABLE_NAME = B.TABLE_NAME ORDER BY TABLE_NAME 参考博客: 获取oracle数据库当前用户下所有表名和表名的注释 - 尹飞飞 - ITeye博客https://yinfeifei.iteye.com/blog/751858 原文地址:https://www.cnblogs.com/huashen

【mysql】存储过程,查询指定数据库、具体编码类型含有某字符串的所有表名和列名

1.需求:就是想在一个数据库中查找存在某字符串的表和列: 2.例子,我这里my_test数据库有3张表,test_replace的name.password列有张三字符串,t1表的name.city列也有张三字符串,t_user表就没有张三字符串. 运行结果 t1,name;t1,city;test_replace,name;test_replace,password 符合要求 3.代码 -- 1.将mysql分隔符从;设置为& DELIMITER & -- 2.如果存在存储过程getCo

C#获取指定IP地址的数据库所有数据库实例名

/// <summary> /// 获取指定IP地址的数据库所有数据库实例名. /// </summary> /// <param name="ip">指定的 IP 地址.</param> /// <param name="username">登录数据库的用户名.</param> /// <param name="password">登陆数据库的密码.</p

JavaEE学习之Spring Security3.x——模拟数据库实现用户,权限,资源的管理

一.引言 因项目需要最近研究了下Spring Security3.x,并模拟数据库实现用户,权限,资源的管理. 二.准备 1.了解一些Spring MVC相关知识: 2.了解一些AOP相关知识: 3.了解Spring: 4.了解Maven,并安装. 三.实现步骤 本示例中使用的版本是Spring Security3.2.2.通过数据库实现Spring Security认证授权大致需要以下几个步骤: 1.新建maven web project(因为本示例使用的是maven来构建的),项目结构如下,

使用JDBC获取各数据库的Meta信息——表以及对应的列

先贴代码,作为草稿: 第一个是工具类, MapUtil.java [java] view plain copy import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import java.util.regex.Matcher; import java.ut

获取sqlserver数据库中所有库、表、字段名的方法

1.获取所有数据库名: SELECT Name from Master..SysDatabases ORDER BY Name 2.获取所有表名: SELECT Name from DatabaseName..SysObjects Where XType='U' ORDER BY Name XType='U':表示所有用户表; XType='S':表示所有系统表; 3.获取所有字段名: SELECT Name from SysColumns WHERE id=Object_Id('TableNa

【试水CAS-4.0.3】第04节_CAS服务端通过数据库认证用户

本文源码下载:http://download.csdn.net/detail/jadyer/8911139 /** * @see ------------------------------------------------------------------------------------------------------------------------ * @see CAS服务端通过数据库认证用户 * @see 实现方式有两种,一是自己写数据库获取用户名密码再认证的类,一是借助C

SQL语句获取所有数据库名、表名、字段名、表字段长度

引自:http://www.2cto.com/database/201209/155178.html 获取数据库中所有的表 SELECT SysObjects.name AS Tablename FROM sysobjects WHERE xtype = 'U' 获取数据库中所有表的列名 SELECT SysColumns.name AS Columnsname, SysObjects.name AS Tablename FROM SysObjects, SysColumns WHERE Sys

python实现用户登陆(sqlite数据库存储用户信息)

python实现用户登陆(sqlite数据库存储用户信息) 目录 创建数据库 数据库管理 简单登陆 有些地方还未完善. 创建数据库 import sqlite3 #建一个数据库 def create_sql(): sql = sqlite3.connect("user_data.db") sql.execute("""create table if not exists %s( %s integer primary key autoincrement, %