`

使用DatabaseMetaDate获取数据库信息

阅读更多
import java.sql.*;
public class GetDBInfo
{
  public GetDBInfo()
  {
  }

  public static void main(String[] args)
  {
  try{
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
    String url="dbc:oracle:thin:@localhost:1521:orcl";
    String user="system";
    String pass="******";
    String s;
    Connection con=DriverManager.getConnection(url,user,pass);
        DatabaseMetaData dbmd=con.getMetaData();
    s = dbmd.getDriverName();
    System.out.println("驱动程序的名称是: "+s);
    System.out.println(" ");

    s = dbmd.getDatabaseProductName();
    System.out.println ("数据库名称是:"+s);
    System.out.println(" ");

    ResultSet rs = dbmd.getSchemas();
    System.out.println("模式名有:");
    while(rs.next())
      System.out.print("  "+rs.getString(1));
      System.out.println();
      
     s = dbmd.getSQLKeywords();
    System.out.println("SQL中的关键词为: "+s);
    System.out.println(" ");

    int max=dbmd.getMaxColumnNameLength();
    System.out.println ("列名的最大长度可以是:"+max);
    System.out.println(" ");

    max = dbmd.getMaxTableNameLength();
    System.out.println ("表名的最大长度可以是:"+max);
    System.out.println(" ");

    max = dbmd.getMaxColumnsInSelect();
    System.out.println ("一个select 子句所能返回的最多列数列名的最大长度可是是:"+max);
    System.out.println(" ");

    max = dbmd.getMaxTablesInSelect();
    System.out.println ("一个SELECT语句最多可以访问多少个表:"+max);
    System.out.println(" ");


    max = dbmd.getMaxColumnsInTable();
    System.out.println ("表中允许的最多列数:"+max);
    System.out.println(" ");

    max = dbmd.getMaxConnections();
    System.out.println ("并发访问的用户个数:"+max);
    System.out.println(" ");

    max = dbmd.getMaxStatementLength();
    System.out.println ("SQL语句最大允许的长度:"+max);
    System.out.println(" ");

    s = dbmd.getNumericFunctions();
    System.out.println("数据库的所有数学函数的列表: "+s);
    System.out.println(" ");

    s = dbmd.getStringFunctions();
    System.out.println("数据库的所有字符串函数的列表: "+s);
    System.out.println(" ");

    s = dbmd.getSystemFunctions();
    System.out.println("数据库的所有系统函数的列表: "+s);
    System.out.println(" ");

    s = dbmd.getTimeDateFunctions();
    System.out.println("数据库的所有日期时间函数的列表: "+s);
    System.out.println(" ");

    rs = dbmd.getTypeInfo();
    while(rs.next())
      {
        System.out.print(" 数据类型名:"+rs.getString(1));
        System.out.print("  数据类型:"+ rs.getString(2));
        System.out.print("  精度:"+   rs.getString(3));
        System.out.println("  基数:"+   rs.getString(18));
      }
      System.out.println(" ");

    s = dbmd.getURL();
    System.out.println("此数据库的url: "+s);
    System.out.println(" ");

    s = dbmd.getUserName();
    System.out.println("此数据库的用户: "+s);
    System.out.println(" ");
//好像要注意是大写
    String [ ] t = { "TABLE", "VIEW" };
    rs = dbmd.getTables(null, "HR", "%", t);
    while(rs.next()){
      System.out.print("目录名:"+rs.getString(1));
      System.out.print(" 模式名:"+rs.getString(2));
      System.out.print(" 表名:"+rs.getString(3));
      System.out.print(" 表的类型:"+rs.getString(4));
      System.out.println(" 注释:"+rs.getString(5));
      }
      System.out.println(" ");

    rs = dbmd.getPrimaryKeys(null, "HR","EMPLOYEES");
    while(rs.next()){
      System.out.print("目录名:"+rs.getString(1));
      System.out.print(" 模式名:"+rs.getString(2));
      System.out.print(" 表名:"+rs.getString(3));
      System.out.print(" 列名顺序号:"+rs.getString(4));
      System.out.print(" 列名顺序号:"+rs.getString(5));
      System.out.println(" 主键名:"+rs.getString(6));
      }
      System.out.println(" ");

     rs = dbmd.getTableTypes();
     System.out.println(" 表的类型有:");
     while(rs.next())
       System.out.print("  "+ rs.getString(1));
       System.out.println();
       System.out.println(" ");

     rs = dbmd.getColumns(null, "HR", "EMPLOYEES", "%");
     System.out.println(" 表名 "+" 列名 "+"  数据类型"+" 本地类型名"+" 列的大小"+ " 小数位数"+" 数据基数"+" 是否可空"+" 索引号");
     while(rs.next()){
      System.out.print(rs.getString(3)+" ");
      System.out.print(rs.getString(4)+" ");
      System.out.print(rs.getString(5)+" ");
      System.out.print(rs.getString(6)+" ");
      System.out.print(rs.getString(7)+" ");
      System.out.print(rs.getString(9)+" ");
      System.out.print(rs.getString(10)+" ");
      System.out.print(rs.getString(11)+" ");
      System.out.println(rs.getString(17)+" ");
      }
      System.out.println(" ");

      rs = dbmd.getIndexInfo(null, "HR", "EMPLOYEES", false, false);

       System.out.println(" 表名"+" 索引名"+" 索引类型"+" 索引列名"+" 索引顺序"+ " 小数位数"+" 数据基数"+" 是否可空"+" 索引号");
      while(rs.next()){
      System.out.print(rs.getString(3)+" ");
      System.out.print(rs.getString(6)+" ");
      System.out.print(rs.getString(7)+" ");
      System.out.print(rs.getString(9)+" ");
      System.out.println(rs.getString(10)+" ");
      }
      System.out.println(" ");
    
    rs.close();
       con.close();
    }
    catch(Exception e){System.out.println(e);}
    new GetDBInfo();
  }
}


 

分享到:
评论

相关推荐

    java 查询oracle数据库所有表DatabaseMetaData的用法(详解)

    在Java编程中,当我们需要与Oracle数据库交互时,`java.sql.DatabaseMetaData`接口提供了一种方式来获取关于数据库的各种元...在使用时,需要注意不同数据库系统的特性和方法参数的设置,以确保正确地获取所需的信息。

    DatabaseMetaDate接口

    DatabaseMetaData 接口作为整体提供有关数据库的综合信息。

    VB航空公司管理信息系统 (源代码+系统)(2024it).7z

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;

    基于SpringBoot+Vue开发的排课管理系统设计源码

    本项目为基于SpringBoot和Vue框架构建的排课管理系统源码,包含228个文件,涵盖139个Java源文件、30个JavaScript文件、24个Vue组件文件、12个PNG图片文件、7个XML配置文件、2个Git忽略文件、2个JSON文件、2个JPG图片文件、1个Markdown文档以及1个LICENSE文件。该系统分为前端Vue界面和后端SpringBoot服务,代码结构清晰,技术选型成熟,非常适合Java编程初学者和计算机专业学生学习和实践使用。

    vb图书管理系统(论文+源代码+开题报告+外文翻译+答辩ppt)(20249q).7z

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;

    YOLOv11 实现游戏中自动钓鱼

    检测图片 + 模型

    【未发表】基于三角测量拓扑聚合优化器TTAO优化宽度学习BLS实现光伏数据预测算法研究附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    毕设-php+mysql学生成绩查询(系统)25.zip

    毕设-php+mysql学生成绩查询(系统)25.zip

    vb客户管理系统设计(论文+源代码+开题报告+可行性报告+答辩PPT)(20241k).7z

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;

    【未发表】基于鲸鱼优化算法WOA优化鲁棒极限学习机RELM实现负荷数据回归预测算法研究附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    ASP.NET计算机科学与工程系网站毕业设计论文(2024s3).7z

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;

    风电电力电子,仿真模拟,可以参考

    风电电力电子,仿真模拟,可以参考

    VB教材管理系统设计(源代码+系统+开题报告+答辩PPT)(2024y1).7z

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;

    期末大作业基于SpringBoot+Vue的员工的季度绩效考核系统-最新开发(含全新源码+设计报告及资料).zip

    期末大作业基于SpringBoot+Vue的员工的季度绩效考核系统-最新开发(含全新源码+设计报告及资料).zip 【资源说明】 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 6、欢迎下载,沟通交流,互相学习,共同进步!

    【未发表】基于混沌博弈优化算法CGO优化鲁棒极限学习机RELM实现负荷数据回归预测算法研究附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    2020“创青春・交子杯”新网银行金融科技挑战赛AI算法赛道pytorch版项目代码及完整资料.zip

    2020“创青春・交子杯”新网银行金融科技挑战赛AI算法赛道pytorch版项目代码及完整资料.zip 【资源说明】 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 6、欢迎下载,沟通交流,互相学习,共同进步!

    基于python+turtle烟花秀(完整代码)

    内容概要: 本文介绍了一个基于Python语言和Turtle图形库的烟花秀程序。该程序模拟了烟花在夜空中绽放的效果,通过编程方式展现了烟花的发射、上升、爆炸和消散过程。文章首先概述了Turtle库的基本概念,它是一个简单的绘图工具,允许用户控制一个小海龟在屏幕上移动并绘制图形。接着,详细描述了如何使用Turtle库中的函数来模拟烟花的动态效果,包括随机生成烟花的起始位置、爆炸形状和颜色,以及控制烟花的飞行轨迹。程序的核心在于使用Python的随机库来生成烟花的多样性,以及利用Turtle的更新机制来实现连续的动画效果。 使用场景和目标: 这个基于Python和Turtle的烟花秀程序适用于教育演示、节日庆祝和个人娱乐。在教育领域,它可以作为编程入门的实例,帮助学生理解程序逻辑和对象控制。节日庆祝时,它可以作为一个环保的替代方案,为用户提供一个无需外出的安全烟花观赏体验。对于编程爱好者来说,这个程序是一个有趣的项目,可以锻炼编程技能并激发创造力。目标是提供一个易于理解和实现的烟花秀示例,使读者能够快速创建自己的烟花秀,并在此基础上进行个性化定制和创新。

    asp.net基于BS的图书销售管理系统的设计与实现(源代码+论文)(2024c0).7z

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;

    ASP.NET公文管理系统的设计与实现(源代码+论文)(2024se).7z

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;

    vb人事资源管理系统+论文(2024vs).7z

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;

Global site tag (gtag.js) - Google Analytics