读取数据库中的所有的表名

  1. private Set<String> getTableNameByCon(Connection con) {
  2. Set<String> set = new HashSet<String>();
  3. try {
  4. DatabaseMetaData meta = con.getMetaData();
  5. ResultSet rs = meta.getTables(null, null, null,
  6. new String[] { "TABLE" });
  7. while (rs.next()) {
  8. set.add(rs.getString(3));
  9. }
  10. con.close();
  11. } catch (Exception e) {
  12. try {
  13. con.close();
  14. } catch (SQLException e1) {
  15. e1.printStackTrace();
  16. }
  17. e.printStackTrace();
  18. }
  19. return set;
  20. }

读取表介绍

  1. private void getTableNotes(Connection con){
  2. try {
  3. DatabaseMetaData dbmd=con.getMetaData();
  4. ResultSet resultSet = dbmd.getTables(null, "%", "%", new String[] { "TABLE" });
  5. while (resultSet.next()) {
  6. String tableName=resultSet.getString("TABLE_NAME");
  7. String remarkes = resultSet.getString("REMARKS");
  8. System.out.println(tableName+"="+remarkes);
  9. }
  10. } catch (Exception e) {
  11. e.printStackTrace();
  12. }
  13. }

其他属性等

  1. String tableName = tableSet.getString("TABLE_NAME");
  2. String tableComment = tableSet.getString("REMARKS");
  3.  
  4. String columnName = columnSet.getString("COLUMN_NAME");
  5. String columnComment = columnSet.getString("REMARKS");
  6. String sqlType = columnSet.getString("DATA_TYPE");

另一种变通的方式(有时从如上的信息中,取不到注释信息)

这使用下面字符串截取的方式-(可能会出现乱码问题)

  1. package docs;
  2.  
  3. import java.io.UnsupportedEncodingException;
  4. import java.sql.Connection;
  5. import java.sql.DriverManager;
  6. import java.sql.ResultSet;
  7. import java.sql.SQLException;
  8. import java.sql.Statement;
  9. import java.util.ArrayList;
  10. import java.util.HashMap;
  11. import java.util.Iterator;
  12. import java.util.List;
  13. import java.util.Map;
  14. import java.util.Set;
  15.  
  16. public class TestTableInfo {
  17.  
  18. private static String url = "jdbc:mysql://xxxx";
  19. private static String user = "xxx";
  20. private static String pwd = "xxxx";
  21. public static Connection getConnection() {
  22. Connection conn = null;
  23. try {
  24. Class.forName("com.mysql.jdbc.Driver");
  25. conn = DriverManager.getConnection(url, user, pwd);
  26. } catch (ClassNotFoundException e) {
  27. e.printStackTrace();
  28. } catch (SQLException e) {
  29. e.printStackTrace();
  30. }
  31. return conn;
  32. }
  33. private static Statement stmt = null;
  34. private static List<String> tableNameList = new ArrayList<String>();
  35.  
  36. public static Map<String,String> getCommentByTableName() throws Exception {
  37. Map<String,String> map = new HashMap<String,String>();
  38. for (int i = 0; i < tableNameList.size(); i++) {
  39. String table = (String) tableNameList.get(i);
  40. ResultSet rs = stmt.executeQuery("SHOW CREATE TABLE " + table);
  41. if (rs != null && rs.next()) {
  42. String create = rs.getString(2);
  43. String comment = parse(create);
  44. map.put(table, comment);
  45. }
  46. rs.close();
  47. }
  48. return map;
  49. }
  50.  
  51. public static void getAllTableName() throws Exception {
  52. Connection conn = getConnection();
  53. stmt = conn.createStatement();
  54. ResultSet rs = stmt.executeQuery("SHOW TABLES ");
  55. while (rs.next()) {
  56. String tableName = rs.getString(1);
  57. tableNameList.add(tableName);
  58. }
  59. rs.close();
  60. }
  61.  
  62. public static String parse(String all) {
  63. String comment = null;
  64. int index = all.indexOf("COMMENT='");
  65. if (index < 0) {
  66. return "";
  67. }
  68. comment = all.substring(index + 9);
  69. comment = comment.substring(0, comment.length() - 1);
  70. try {
  71. comment = new String(comment.getBytes("utf-8"));
  72. } catch (UnsupportedEncodingException e) {
  73. e.printStackTrace();
  74. }
  75. return comment;
  76. }
  77.  
  78. public static void main(String[] args) throws Exception {
  79. getAllTableName();
  80. Map<String,String> tablesComment = getCommentByTableName();
  81. Set<String> names = tablesComment.keySet();
  82. Iterator<String> iter = names.iterator();
  83. while (iter.hasNext()) {
  84. String name = iter.next();
  85. System.out.println("Table Name: " + name + ", Comment: "+ tablesComment.get(name));
  86. }
  87. }
  88.  
  89. }

jdbc读取数据库,表相关信息(含注释)的更多相关文章

  1. spring读取数据库的配置信息(url、username、password)时的<bean>PropertyPlaceholderConfigurer的用法

    用法1: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://w ...

  2. C#连接Oracle数据库,通过EF自动生成与数据库表相关的实体类

    C#连接Oracle数据库,通过EF自动生成与数据库表相关的实体类 ps:如需转载,请在转载文章明显处,i标注作者和原文地址 一.准备条件 需要自己电脑上已经安装了Oracle数据库,并且已经创建了相 ...

  3. 通过jdbc取得数据库表结构信息

    做制作开发平台时,首要的一点是如何取得数据库表结构信息.一般通用的做法就是通过JDBC中的ResultSetMetaData类来进行操作,当你取得了数据库表结构信息后,比如说表的每个字段名称,字段类型 ...

  4. jdbc读取数据库图片文件

    package 读取大文件.read; import java.io.BufferedReader; import java.io.FileOutputStream; import java.io.I ...

  5. jdbc读取数据库表

    把结果集封装为List // 通过结果集元数据封装List结果集 public static List<Map<String, Object>> read(String sql ...

  6. 查询 MySQL 库/表相关信息

    SHOW DATABASES //列出 MySQL Server 数据库. SHOW TABLES [FROM db_name] //列出数据库数据表. SHOW CREATE TABLES tbl_ ...

  7. php随笔2-php+ajax 实现输入读取数据库显示匹配信息

    dropbox_index.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...

  8. 通过jdbc获取数据库中的表结构

    通过jdbc获取数据库中的表结构 主键 各个表字段类型及应用生成实体类   1.JDBC中通过MetaData来获取具体的表的相关信息.可以查询数据库中的有哪些表,表有哪些字段,字段的属性等等.Met ...

  9. 通过jdbc获取数据库中的表结构 主键 各个表字段类型及应用生成实体类

    http://www.cnblogs.com/lbangel/p/3487796.html 1.JDBC中通过MetaData来获取具体的表的相关信息.可以查询数据库中的有哪些表,表有哪些字段,字段的 ...

随机推荐

  1. Open DS

    0: 1. Develope OpenDS from here: eu.opends.main --> Simulator.java --> main()

  2. java中动态代理的实现

    动态代理的实现 使用的模式:代理模式. 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问.类似租房的中介. 两种动态代理: (1)jdk动态代理,jdk动态代理是由Java内部的反射机制 ...

  3. [转载]C#委托和事件(Delegate、Event、EventHandler、EventArgs)

    原文链接:http://blog.csdn.net/zwj7612356/article/details/8272520 14.1.委托 当要把方法作为实参传送给其他方法的形参时,形参需要使用委托.委 ...

  4. UILabel 自适应宽高

    #import <UIKit/UIKit.h> @interface UILabel (UILabel_LabelHeighAndWidth) + (CGFloat)getHeightBy ...

  5. 突然想到一个问题:有关 cqrs 分离

    大部分的系统,都是查询多,c少,那为什么我们不把q放在内存里面,而c直接操作数据库呢? 就如enode,c在内存,而q在数据库,当然q也很容易扩展到内存缓存上.二个enode案例demo,都可以让c的 ...

  6. Hibernate 系列 06 - 对象在JVM中的生命周期

    引导目录: Hibernate 系列教程 目录 Java对象通过new命令进行创建,Java虚拟机(Java Virtual Machine,JVM)会为新的Java对象在内存中开辟一个新空间以存放次 ...

  7. 转载 NPOI.dll 用法。单元格,样式,字体,颜色,行高,宽度。读写excel

    我用的版本是1.25的.每个版本用法有一点不同 using System; using System.Collections.Generic; using System.ComponentModel; ...

  8. PHP中的数据库四、mongodb

    h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h ...

  9. sys.dm_os_waiting_tasks 引发的疑问(中)

    上一篇我们说了一下sys.dm_exec_requests 和 sys.dm_os_waiting_tasks 在获取并行等待的时候得不同结果,这一篇我们谈论下我的第二个疑问:为什么一个并行计划(4线 ...

  10. python3: error while loading shared libraries: libpython3.5m.so.1.0: cannot open shared object file: No such file or directory

    安装python3遇到报错: wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz ./configure --prefix=/u ...