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

    private Set<String> getTableNameByCon(Connection con) {
Set<String> set = new HashSet<String>();
try {
DatabaseMetaData meta = con.getMetaData();
ResultSet rs = meta.getTables(null, null, null,
new String[] { "TABLE" });
while (rs.next()) {
set.add(rs.getString(3));
}
con.close();
} catch (Exception e) {
try {
con.close();
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
return set;
}

读取表介绍

    private void getTableNotes(Connection con){
try {
DatabaseMetaData dbmd=con.getMetaData();
ResultSet resultSet = dbmd.getTables(null, "%", "%", new String[] { "TABLE" });
while (resultSet.next()) {
String tableName=resultSet.getString("TABLE_NAME");
String remarkes = resultSet.getString("REMARKS");
System.out.println(tableName+"="+remarkes);
}
} catch (Exception e) {
e.printStackTrace();
}
}

其他属性等

    String tableName = tableSet.getString("TABLE_NAME");
String tableComment = tableSet.getString("REMARKS"); String columnName = columnSet.getString("COLUMN_NAME");
String columnComment = columnSet.getString("REMARKS");
String sqlType = columnSet.getString("DATA_TYPE");

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

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

package docs;

import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set; public class TestTableInfo { private static String url = "jdbc:mysql://xxxx";
private static String user = "xxx";
private static String pwd = "xxxx";
public static Connection getConnection() {
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, user, pwd);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
private static Statement stmt = null;
private static List<String> tableNameList = new ArrayList<String>(); public static Map<String,String> getCommentByTableName() throws Exception {
Map<String,String> map = new HashMap<String,String>();
for (int i = 0; i < tableNameList.size(); i++) {
String table = (String) tableNameList.get(i);
ResultSet rs = stmt.executeQuery("SHOW CREATE TABLE " + table);
if (rs != null && rs.next()) {
String create = rs.getString(2);
String comment = parse(create);
map.put(table, comment);
}
rs.close();
}
return map;
} public static void getAllTableName() throws Exception {
Connection conn = getConnection();
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SHOW TABLES ");
while (rs.next()) {
String tableName = rs.getString(1);
tableNameList.add(tableName);
}
rs.close();
} public static String parse(String all) {
String comment = null;
int index = all.indexOf("COMMENT='");
if (index < 0) {
return "";
}
comment = all.substring(index + 9);
comment = comment.substring(0, comment.length() - 1);
try {
comment = new String(comment.getBytes("utf-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return comment;
} public static void main(String[] args) throws Exception {
getAllTableName();
Map<String,String> tablesComment = getCommentByTableName();
Set<String> names = tablesComment.keySet();
Iterator<String> iter = names.iterator();
while (iter.hasNext()) {
String name = iter.next();
System.out.println("Table Name: " + name + ", Comment: "+ tablesComment.get(name));
}
} }

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. 【转载】10 个实用技巧,让 Finder 带你飞

    来自:http://sspai.com/27403/ Finder 是 Mac 电脑的系统程序,有的功能类似 Windows 的资源管理器.它是我们打开 Mac 首先见到的「笑脸」,有了它,我们可以组 ...

  2. C#工业物联网和集成系统解决方案的技术路线(数据源、数据采集、数据上传与接收、ActiveMQ、Mongodb、WebApi、手机App)

    目       录 工业物联网和集成系统解决方案的技术路线... 1 前言... 1 第一章           系统架构... 3 1.1           硬件构架图... 3 1.2      ...

  3. [连载]《C#通讯(串口和网络)框架的设计与实现》- 10.宿主程序详细设计

    目       录 第十章           宿主程序详细设计... 2 10.1        配置文件设计... 3 10.2        加载设备驱动... 4 10.3        加载 ...

  4. [连载]《C#通讯(串口和网络)框架的设计与实现》- 8.总体控制器的设计

    目       录 第八章           总体控制器的设计... 2 8.1           总控制器的职能... 2 8.2           组装和释放部件... 3 8.3      ...

  5. MySQL动态字符串处理DYNAMIC_STRING

    MySQL中,常常会看到一些关于动态字符串的处理,列如:DYNAMIC_STRING. 为了记录动态字符串的实际长度,缓冲区的最大长度,以及每次字符串需要调整时,及时分配新的内存,以及调整长度.MyS ...

  6. 如何采用easyui tree编写简单角色权限代码

    首先每个管理员得对应一个角色: 而角色可以操作多个栏目,这种情况下我们可以采用tree多选的方式: 在页面上js代码: $('#Permission').dialog({ title: '栏目权限', ...

  7. iOS真机测试could not find developer disk image

    兄弟你该升级xcode的了,xcode的版本已经落后于手机的iOS版本了

  8. head/tail实现

         只实现了head/tail的基本功能,默认显示十行及-n参数.       一.使用带缓冲的系统调用.       write/read等系统调用是不带缓冲的,可以包装一层,使其带缓冲. t ...

  9. error LNK2001: 无法解析的外部符号

    1.错误描述 error LNK2001: 无法解析的外部符号 "__declspec(dllimport) void __cdecl PadSystem::Private::printQS ...

  10. Intel 推出 DPDK 开发包的意义是什么?

    Intel 推出 DPDK 开发包的意义是什么? http://www.zhihu.com/question/27413080?sort=created 基于intel dpdk的包处理器,相较于基于 ...