时间:2021-07-01 10:21:17 帮助过:9人阅读
2.java获取数据库 库信息以及具体主键 外键 索引等详细信息
1 package com.sxd.mysqlInfo.test; 2 3 import java.sql.DriverManager; 4 import java.sql.ResultSet; 5 import java.sql.SQLException; 6 7 import org.junit.Test; 8 9 import com.mysql.jdbc.Connection; 10 import com.mysql.jdbc.DatabaseMetaData; 11 12 public class MysqlInfo { 13 14 private final String DRIVER = "com.mysql.jdbc.Driver"; 15 private final String URL = "jdbc:mysql://localhost:3306/"; 16 private final String USERNAME = "root"; 17 private final String PASSWORD = "root"; 18 19 @Test 20 public void just4MySQLInfo() throws ClassNotFoundException, SQLException{ 21 Class.forName(DRIVER); 22 Connection con = (Connection) DriverManager.getConnection(URL,USERNAME,PASSWORD); 23 DatabaseMetaData metaData = (DatabaseMetaData) con.getMetaData(); 24 25 /** 26 * 1.返回数据库的相关信息 27 */ 28 System.out.println("数据库已知的用户: "+ metaData.getUserName()); 29 System.out.println("数据库的系统函数的逗号分隔列表: "+ metaData.getSystemFunctions()); 30 System.out.println("数据库的时间和日期函数的逗号分隔列表: "+ metaData.getTimeDateFunctions()); 31 System.out.println("数据库的字符串函数的逗号分隔列表: "+ metaData.getStringFunctions()); 32 System.out.println("数据库供应商用于 ‘schema‘ 的首选术语: "+ metaData.getSchemaTerm()); 33 System.out.println("数据库URL: " + metaData.getURL()); 34 System.out.println("是否允许只读:" + metaData.isReadOnly()); 35 System.out.println("数据库的产品名称:" + metaData.getDatabaseProductName()); 36 System.out.println("数据库的版本:" + metaData.getDatabaseProductVersion()); 37 System.out.println("驱动程序的名称:" + metaData.getDriverName()); 38 System.out.println("驱动程序的版本:" + metaData.getDriverVersion()); 39 System.out.println(); 40 System.out.println("数据库中使用的表类型"); 41 42 ResultSet rs = metaData.getTableTypes(); 43 while (rs.next()) { 44 System.out.println("1.-->"+rs.getString(1)); 45 } 46 rs.close(); 47 System.out.println(); 48 49 /** 50 * 获取指定的数据库的所有表的类型,getTables()的第一个参数就是数据库名 51 * 因为与MySQL连接时没有指定,这里加上,剩下的参数就可以为null了 52 * 第二个参数是模式名称的模式,但是输出也是什么都没有。 53 */ 54 System.out.println("获取指定的数据库的所有表的类型"); 55 ResultSet rs1 = metaData.getTables("biologyinfo", "",null, null); 56 while (rs1.next()) { 57 System.out.println(); 58 System.out.println("数据库名:"+ rs1.getString(1)); 59 System.out.println("表名: "+rs1.getString(3)); 60 System.out.println("类型: "+rs1.getString(4)); 61 } 62 rs1.close(); 63 64 System.out.println(); 65 System.out.println("获取指定的数据库的表的主键"); 66 //获取指定的数据库的表的主键,第二个参数也是模式名称的模式,使用null了 第三个是表名称 为null表示可以查到所有的表 67 ResultSet rs2 = metaData.getPrimaryKeys("wxfirst", null, "materialinfo"); 68 69 while (rs2.next()) { 70 System.out.println("表名称: "+ rs2.getString(3)); 71 System.out.println("主键名称: "+ rs2.getString(4)); 72 System.out.println("主键de序列号: "+ rs2.getString(5)); 73 System.out.println("主键de名称: "+ rs2.getString(6)); 74 } 75 rs2.close(); 76 77 System.out.println(); 78 79 80 /** 81 * 获取某个表的索引信息 82 */ 83 System.out.println("DatabaseMetaData.getIndexInfo()方法返回信息:"); 84 ResultSet rs3 = metaData.getIndexInfo("wxfirst", null, "materialinfo", false, true); 85 while (rs3.next()) { 86 System.out.println("数据库名: "+ rs3.getString(1)); 87 System.out.println("表模式: "+ rs3.getString(2)); 88 System.out.println("表名称: "+ rs3.getString(3)); 89 System.out.println("索引值是否可以不唯一: "+ rs3.getString(4)); 90 System.out.println("索引类别: "+ rs3.getString(5)); 91 System.out.println("索引名称: "+ rs3.getString(6)); 92 System.out.println("索引类型: "+ rs3.getString(7)); 93 System.out.println("索引中的列序列号: "+ rs3.getString(8)); 94 System.out.println("列名称: "+ rs3.getString(9)); 95 System.out.println("列排序序列: "+ rs3.getString(10)); 96 System.out.println("TYPE为 tableIndexStatistic时它是表中的行数否则它是索引中唯一值的数量: "+ rs3.getString(11)); 97 System.out.println("TYPE为 tableIndexStatisic时它是用于表的页数否则它是用于当前索引的页数: "+ rs3.getString(12)); 98 System.out.println("过滤器条件: "+ rs3.getString(13)); 99 } 100 rs3.close(); 101 102 103 System.out.println(); 104 105 /** 106 * 获取某个表的所有列信息 107 */ 108 System.out.println("DatabaseMetaData.getColumns()方法返回数据表列信息"); 109 ResultSet rs4 = metaData.getColumns("wxfirst", null, "materialinfo", "mediaType"); 110 while(rs4.next()){ 111 System.out.println("数据库名称:"+rs4.getString(1)); 112 System.out.println("表模式:"+rs4.getString(2)); 113 System.out.println("表名称:"+rs4.getString(3)); 114 System.out.println("列名称:"+rs4.getString(4)); 115 System.out.println("SQL类型:"+rs4.getString(5)); 116 System.out.println("数据源依赖类型名称:"+rs4.getString(6)); 117 System.out.println("列的大小:"+rs4.getString(7)); 118 System.out.println("未被使用:"+rs4.getString(8)); 119 System.out.println("小数部分的位数:"+rs4.getString(9)); 120 System.out.println("基数:"+rs4.getString(10)); 121 System.out.println("是否允许NULL:"+rs4.getString(11)); 122 System.out.println("描述列的注释:"+rs4.getString(12)); 123 System.out.println("该列的默认值:"+rs4.getString(13)); 124 System.out.println("未使用:"+rs4.getString(14)); 125 System.out.println("未使用:"+rs4.getString(15)); 126 System.out.println("对于char类型, 该长度是列中的最大字节数:"+rs4.getString(16)); 127 System.out.println("表中列的索引:"+rs4.getString(17)); 128 System.out.println("ISO规则用于确定列是否包括NULL:"+rs4.getString(18)); 129 System.out.println("表的类别:"+rs4.getString(19)); 130 System.out.println("表的模式:"+rs4.getString(20)); 131 System.out.println("表名称:"+rs4.getString(21)); 132 System.out.println("不同类型或用户生成Ref类型:"+rs4.getString(22)); 133 System.out.println("此列是否自增:"+rs4.getString(23)); 134 } 135 rs4.close(); 136 137 138 139 140 141 } 142 }View Code
【java 获取数据库信息】获取MySQL或其他数据库的详细信息
标签:local term final product table closed imp ted ring