当前位置: 首页 > news >正文

网站图片切换中国纪检监察报投稿

网站图片切换,中国纪检监察报投稿,教育网页设计模板,100种迷你小手工先看下需求背景#xff1a; 获取某个数据源连接下所有库名#xff0c;库下所有表名#xff0c;表中所有字段 1.MySql 先说MySql吧#xff0c;最简单 1.1获得所有数据库库名 这是一个mysql和sqlserver公用的方法#xff0c;这里url不用担心数据库问题#xff0c;他其实… 先看下需求背景 获取某个数据源连接下所有库名库下所有表名表中所有字段 1.MySql 先说MySql吧最简单 1.1获得所有数据库库名 这是一个mysql和sqlserver公用的方法这里url不用担心数据库问题他其实用的是ip,端口号用户名密码 这些信息就行但是因为url上没有数据库名字的话无法建立连接所以url上就不得不带着。 实际上这个方法可以获取到该连接下的所有数据库 jdbc:sqlserver://127.0.0.1:3306;databaseNamemaster;encrypttrue;trustServerCertificatetrue jdbc:mysql://127.0.0.1:3306/test private static final String TABLE_CAT TABLE_CAT;/*** 获取连接下所有的数据库名称 mysql和sqlserver可用** param url* param user* param password* return*/public static ListString getDBNames(String url, String user, String password) {Connection conn null;ListString list new ArrayList();try {conn DriverManager.getConnection(url, user, password);DatabaseMetaData metadata conn.getMetaData();ResultSet resultSet metadata.getCatalogs();while (resultSet.next()) {String databaseName resultSet.getString(TABLE_CAT);list.add(databaseName);System.out.println(databaseName);}return list;} catch (SQLException e) {log.error(e.getMessage());} finally {//finally中关闭连接if (Objects.nonNull(conn)) {try {conn.close();} catch (SQLException e) {throw new RuntimeException(e);}}}return list;} 1.2 获取某个库下所有表名 这个方法也不用替换url中的数据库名但是需要把数据库名作为参数上传。 因为查询sql中用到了数据库名 SELECT table_name FROM information_schema.tables WHERE table_schema private static final String TABLE_NAME TABLE_NAME; /*** 获取数据库下所有表名 mysql sqlserver使用** param url* param user* param password* param dbName* return*/public static ListString getMysqlTableNames(String url, String user, String password, String dbName) {Connection conn null;Statement statement null;ResultSet resultSet null;ListString tableNames new ArrayList();StringBuilder stringBuilder new StringBuilder();String query stringBuilder.append(SELECT table_name FROM information_schema.tables WHERE table_schema ).append().append(dbName).append().toString();try {conn DriverManager.getConnection(url, user, password);statement conn.createStatement();resultSet statement.executeQuery(query);while (resultSet.next()) {String tableName resultSet.getString(TABLE_NAME);tableNames.add(tableName);}} catch (SQLException e) {log.error(e.getMessage());} finally {//finally中关闭连接try {if (Objects.nonNull(conn)) {conn.close();}if (Objects.nonNull(statement)) {statement.close();}if (Objects.nonNull(resultSet)) {resultSet.close();}} catch (SQLException e) {throw new RuntimeException(e);}}return tableNames;} 1.3 获取表中的所有列名 这个很简单就执行个select * from 就可以 但是注意 url需要替换 现在新选择的库名是什么那就把url中的databaseName替换为新选择的 这也是一个mysql和sqlserver可以公用的 但是sqlserver有一点需要注意就是最后一个参数 tableName 需要上传为 模式名.表名 因为对于sql来说正常执行查询sql的时候 也要 模式名.表名 查询 select * from dbo.spt_fallback_db /*** 获取表下所有字段 其中url记得把前端新传来库的替换** param url* param user* param password* param tableName* return* throws SQLException*/public static ListString getColumns(String url, String user, String password, String tableName) {//用新的dbName对连接上的dbName进行替换ListString columns new ArrayList();Connection conn null;Statement statement null;ResultSet resultSet null;StringBuilder stringBuilder new StringBuilder();String query stringBuilder.append(select * from ).append(tableName).append( where 1!1).toString();try {conn DriverManager.getConnection(url, user, password);statement conn.createStatement();resultSet statement.executeQuery(query);ResultSetMetaData metaData resultSet.getMetaData();for (int i 1; i metaData.getColumnCount(); i) {String columnName metaData.getColumnName(i);columns.add(columnName);}} catch (SQLException e) {log.error(e.getMessage());} finally {//finally中关闭连接try {if (Objects.nonNull(conn)) {conn.close();}if (Objects.nonNull(statement)) {statement.close();}if (Objects.nonNull(resultSet)) {resultSet.close();}} catch (SQLException e) {throw new RuntimeException(e);}}return columns;} 2.SqlServer 2.1获得所有数据库名 直接看1.1就行 跟mysql公用一个 2.2获得某个库下所有表名 这个url中的数据库名字需要替换为新选择的 而且返回方式是 模式名.表名 的方式返回的以便之后查询使用 select * from new_schema.table_name 获得所有表名的sql  SELECT s.name AS schema_name,t.name AS table_name FROM sys.tables t INNER JOIN sys.schemas s ON t.schema_id s.schema_id private static final String SCHEMA_NAME SCHEMA_NAME;private static final String COLUMN_NAME column_name;/*** 获取数据库下所有表名 sqlserver使用 url需要替换** param url* param user* param password* return*/public static ListString getSqlServerTableNames(String url, String user, String password) {Connection conn null;Statement statement null;ResultSet resultSet null;ListString tableNames new ArrayList();String query SELECT s.name AS schema_name,t.name AS table_name FROM sys.tables t INNER JOIN sys.schemas s ON t.schema_id s.schema_id;try {conn DriverManager.getConnection(url, user, password);statement conn.createStatement();resultSet statement.executeQuery(query);while (resultSet.next()) {String schemaName resultSet.getString(SCHEMA_NAME);String tableName resultSet.getString(TABLE_NAME);//sqlserver查询需要用模式名.表名 如select * from new_schema.table_name 所以拼接返回 存储时也是拼接好的存起来new_schema.table_nametableNames.add(schemaName.concat(Constant.POINT).concat(tableName));}} catch (SQLException e) {log.error(e.getMessage());} finally {//finally中关闭连接try {if (Objects.nonNull(conn)) {conn.close();}if (Objects.nonNull(statement)) {statement.close();}if (Objects.nonNull(resultSet)) {resultSet.close();}} catch (SQLException e) {throw new RuntimeException(e);}}return tableNames;} 2.3获得表中所有列名 直接看1.3就行跟mysql公用一个 注意点跟Mysql也一样url中数据库名字要替换为新选择的 还有就是 sqlserver 要 模式名.表名 3.Oracle oracle真的是一个特别的存在 oracle连接url中的长得像库名的东西其实不是库名是SID他俩不是一个含义 ORACLE_SID、实例名和数据库名的区别及查看方法_oracle数据库名称和sid的关系-CSDN博客 jdbc:oracle:thin:127.0.0.1:3306:helowin 还有就是对于oracle来说你用dbeaver这个连接工具操作更好一点别用datagrip了 对于oracle来说新建数据库其实就是新建用户建好了是要授权才能生效 授权  Oracle 创建用户详解create user-CSDN博客 3.1获得所有库名 了解好了前边的那些知识点再来进行接下来的操作 /*** 获得oracle下所有数据库名称** param url* param user* param password* return*/public static ListString getOracleDBNames(String url, String user, String password) throws Exception {Connection conn null;ListString list new ArrayList();try {conn DriverManager.getConnection(url, user, password);ResultSet schemas conn.getMetaData().getSchemas();while (schemas.next()) {//如果对象中有数据就会循环打印出来String dbName schemas.getString(TABLE_SCHEM);log.info(dbName);list.add(dbName);}return list;} catch (SQLException e) {e.printStackTrace();throw new Exception(oracle数据库连接信息有误请检查数据源);} finally {//finally中关闭连接if (Objects.nonNull(conn)) {conn.close();}}} 这个我找了好久附上源码截图 把源码里边的sql粘出来执行附上执行结果截图 所以其实你用 resultSet.getString(TABLE_SHEM); 也是可以取到库名的 3.2获得某个库下所有表名 前边说了对于oracle来说新建库其实就是新建用户上边有DBeaver截图为证 所以想要查库下所有表就要用owner select TABLE_NAME from all_tables WHERE owner 而且url中库名也不用替换为新的因为sql中会用新的库名  private static final String TABLE_NAME TABLE_NAME;/*** 获取oracle指定库下的所有表名** param url* param user* param password* return*/public static ListString getOracleTableNames(String url, String user, String password, String dbName) {Connection conn null;ListString list new ArrayList();Statement stmt null;ResultSet resultSet null;try {conn DriverManager.getConnection(url, user, password);stmt conn.createStatement();//dba权限才能执行Sselect TABLE_NAME from all_tables WHERE ownerdbName 在没有那么高权限且数据库连接建立成功的情况下只返回数据源那里配置的数据库StringBuilder stringBuilder new StringBuilder();String string stringBuilder.append(select TABLE_NAME from all_tables WHERE owner).append().append(dbName).append().toString();resultSet stmt.executeQuery(string);//有dba权限情况下才会执行这部while (resultSet.next()) {//如果对象中有数据就会循环打印出来String tableName resultSet.getString(TABLE_NAME);log.info(tableName);list.add(tableName);}return list;} catch (SQLException e) {//select TABLE_NAME from all_tables WHERE ownerdbName 这个语句可能没有权限执行log.error(e.getMessage());return list;} finally {//finally中关闭连接try {if (Objects.nonNull(conn)) {conn.close();}if (Objects.nonNull(stmt)) {stmt.close();}if (Objects.nonNull(resultSet)) {resultSet.close();}} catch (SQLException e) {throw new RuntimeException(e);}}} 3.3获取表中所有列名 这里url也不用替换库名但是方法查询要上传新的库名和表名 SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE owner AND table_name /*** 获取oracle指定库表下的所有列名** param url* param user* param password* return*/public static ListString getOracleColumNames(String url, String user, String password, String dbName, String tableName) {Connection conn null;ListString list new ArrayList();Statement stmt null;ResultSet resultSet null;try {conn DriverManager.getConnection(url, user, password);stmt conn.createStatement();StringBuilder stringBuilder new StringBuilder();//通过库名表名获取到列名String string stringBuilder.append(SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE owner).append().append(dbName).append().append( AND table_name).append().append(tableName).append().toString();resultSet stmt.executeQuery(string);//有dba权限情况下才会执行这部while (resultSet.next()) {//如果对象中有数据就会循环打印出来String columName resultSet.getString(COLUMN_NAME);log.info(columName);list.add(columName);}return list.stream().distinct().collect(Collectors.toList());} catch (SQLException e) {//select TABLE_NAME from all_tables WHERE ownerdbName 这个语句可能没有权限执行log.error(e.getMessage());return list;} finally {//finally中关闭连接try {if (Objects.nonNull(conn)) {conn.close();}if (Objects.nonNull(stmt)) {stmt.close();}if (Objects.nonNull(resultSet)) {resultSet.close();}} catch (SQLException e) {throw new RuntimeException(e);}}}
http://www.huolong8.cn/news/92272/

相关文章:

  • 深圳手机医疗网站建设m2型虚拟主机带宽 网站
  • 在哪里做公司网站网站cms系统排名
  • 免费建站模板网站动态表情包在线制作
  • 网站建设有哪些分工分网站建设 慕课
  • 网站敏感关键词烟店网站建设
  • seo优化在线诊断优化设计的答案
  • 建筑网站哪里找我想做个卷帘门网站怎么做
  • dz网站模版wordpress售后主题
  • 传奇服务器网站如何建设wordpress怎么静态页面
  • 查建设工程业绩在哪个网站做网站需要申请商标哪些类目
  • 网站建设 电子书中国最大的外包公司有哪些
  • 建设银行网站怎么开通短信服务聊天软件是怎么开发的
  • 四川成都营销型网站dedecms做网站全教程
  • 网站手机端排名软件四川省住房与城乡建设厅网站官网
  • 绵阳网站建设制作企业手机网站 案例
  • 做网站多少钱一个月广西网络营销外包公司
  • 舟山市建设工程质量监督站网站陕西交通建设集团蓝商公司网站
  • 深圳招聘网站有哪些广州越秀金融大厦
  • 微信二维码网站制作wordpress拖动实现
  • 网站建设取得实效沈阳网络平台推广公司
  • 做pc端网站行情网站顶部悬浮导航代码
  • 做网站可以使用免费空间吗给企业做网站的平台
  • 树荫营销网站十大国外室内设计网站
  • 教如何做帐哪个网站好长沙专业企业建站联系人
  • 建设银行网站百度一下爱站网关键词长尾挖掘
  • wordpress建站后怎样发布营销型网站及原因有哪些方面
  • 织梦做的网站首页出现空白企业策划书目录
  • 广州微信网站建设费用建设信用卡积分商城网站
  • 贵城乡建设官方网站青岛九二网络科技有限公司
  • 网站建设+廊坊网站整体排名大幅下降