使用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="jdbc:microsoft:sqlserver://GAOXIANG:1433;DataBaseName=master";
    String user="daryl715";
    String pass="1234";
    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();
  }
}

时间: 2024-08-31 00:35:52

使用DatabaseMetaDate获取数据库信息的相关文章

这是为什么-获取数据库信息出错,为什么

问题描述 获取数据库信息出错,为什么 用的access,获取表里的"标题"信息出来了.我想要点标题链接到下一页面,显示这个标题的全部信息,也就是详细页面,但是详细页面里不但连接数据库的内容没出来,数据库之外的内容也没了,网页也没有报错,这是为什么 解决方案 .... 解决方案二: ????????????? 解决方案三: 问题描述不清楚,无法回答

html文件利用ajax方法 通过 servlet 获取数据库信息 显示乱码,求解?

问题描述 html文件利用ajax方法 通过 servlet 获取数据库信息 显示乱码,求解?suggest.html:<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"><script language="JavaScript" type="text/javascript" sr

用 Treeview 获取数据库 信息 获取 id问题。。

问题描述 用Treeview获取数据库信息有几成关系我怎么获取保存父节点的id给几个好点的方法.. 解决方案 解决方案二:用dataadapter获取数据,调用Fill()方法将数据写到datatable中,遍历datatable中的数据,对treeview添加treenode,你试试看解决方案三:顶~~~~~~~~~~~~~~解决方案四:数据库中表建立3个字段id,parentid,text顶层目录parentid=0,子目录的parentid=顶层目录的id,text用来保存结点的文本程序加

怎么样动态获取数据库信息

问题描述 怎么样动态获取数据库信息 购物网站,在数据库存储的商品信息,例如颜色,尺寸等获取出来,显示到 相应的页面中,页面中已有颜色,尺寸选择框. 解决方案 你可以搜一下 ajax 异步获取 解决方案二: 获取数据库信息(二)数据库元信息的获取在Salesforce Apex中动态获取SObject信息

.net mvc 实时获取数据库信息,数据库不断有数据载入,然后页面就不断的显示新数据

问题描述 .netmvc实时获取数据库信息,数据库不断有数据载入,然后页面就不断的显示新数据.数据库有一个新数据,我的页面就在原数据的基础上显示一条数据,大家帮帮忙.比较着急啊,最好贴出代码来.谢谢各位啦! 解决方案 解决方案二:1:后台取数据的时间戳大于上一次时间戳(上次取得数据记录的最后时间戳)2:用ajax获取后台数据,不断的添加解决方案三:数据库通知功能(SqlDependency)会主动推送消息给前端.

【java 获取数据库信息】获取MySQL或其他数据库的详细信息

1.首先是 通过数据库获取数据表的详细列信息 1 package com.sxd.mysqlInfo.test; 2 3 import java.sql.Connection; 4 import java.sql.DatabaseMetaData; 5 import java.sql.DriverManager; 6 import java.sql.PreparedStatement; 7 import java.sql.ResultSet; 8 import java.sql.ResultSe

sqlserver数据库获取数据库信息_MsSql

MS SQL SERVER 获取当前数据库文件等信息,适用于多个版本: 复制代码 代码如下: SELECT dbf.file_id AS FileID    , dbf.name AS [FileName]     , s.filename AS FileLocation    , CAST(dbf.size/128.0 AS DECIMAL(19,2)) AS FileSizeMB    , CAST(CAST(FILEPROPERTY(dbf.name, 'SpaceUsed') AS in

sqlserver数据库获取数据库信息

MS SQL SERVER 获取当前数据库文件等信息,适用于多个版本: 复制代码 代码如下:SELECT dbf.file_id AS FileID    , dbf.name AS [FileName]     , s.filename AS FileLocation    , CAST(dbf.size/128.0 AS DECIMAL(19,2)) AS FileSizeMB    , CAST(CAST(FILEPROPERTY(dbf.name, 'SpaceUsed') AS int

使用Ado.net获取数据库架构信息

ado|架构|数据|数据库 使用Ado.net获取数据库架构信息 秋 枫 2004-7-3 在开发的时候有时需要获取数据库架构信息来得到数据库的一些其他信息,比如存储过程.视图.表.字段的类型.备注说明等.通过OleDb.NET数据提供程序可以比较简洁的实现这一点. 一.OleDbConnection的GetOleDbSchemaTable方法 在Ado.net的对象模型的该对象充当了与数据源之间的连接,通过Connection对象来连接数据库或者从数据库断开以释放宝贵的资源.这里我们需要用到的