jdbc读取数据库,表相关信息(含注释)
读取数据库中的所有的表名
- 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读取数据库,表相关信息(含注释)的更多相关文章
- spring读取数据库的配置信息(url、username、password)时的<bean>PropertyPlaceholderConfigurer的用法
用法1: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://w ...
- C#连接Oracle数据库,通过EF自动生成与数据库表相关的实体类
C#连接Oracle数据库,通过EF自动生成与数据库表相关的实体类 ps:如需转载,请在转载文章明显处,i标注作者和原文地址 一.准备条件 需要自己电脑上已经安装了Oracle数据库,并且已经创建了相 ...
- 通过jdbc取得数据库表结构信息
做制作开发平台时,首要的一点是如何取得数据库表结构信息.一般通用的做法就是通过JDBC中的ResultSetMetaData类来进行操作,当你取得了数据库表结构信息后,比如说表的每个字段名称,字段类型 ...
- jdbc读取数据库图片文件
package 读取大文件.read; import java.io.BufferedReader; import java.io.FileOutputStream; import java.io.I ...
- jdbc读取数据库表
把结果集封装为List // 通过结果集元数据封装List结果集 public static List<Map<String, Object>> read(String sql ...
- 查询 MySQL 库/表相关信息
SHOW DATABASES //列出 MySQL Server 数据库. SHOW TABLES [FROM db_name] //列出数据库数据表. SHOW CREATE TABLES tbl_ ...
- php随笔2-php+ajax 实现输入读取数据库显示匹配信息
dropbox_index.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...
- 通过jdbc获取数据库中的表结构
通过jdbc获取数据库中的表结构 主键 各个表字段类型及应用生成实体类 1.JDBC中通过MetaData来获取具体的表的相关信息.可以查询数据库中的有哪些表,表有哪些字段,字段的属性等等.Met ...
- 通过jdbc获取数据库中的表结构 主键 各个表字段类型及应用生成实体类
http://www.cnblogs.com/lbangel/p/3487796.html 1.JDBC中通过MetaData来获取具体的表的相关信息.可以查询数据库中的有哪些表,表有哪些字段,字段的 ...
随机推荐
- POI操作Excel
POI和Excel简介 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作 ...
- dpkg:处理软件包dradis (--configure)时出错
dpkg:处理软件包dradis (--configure)时出错!解决方案:1.将info文件夹更名%mv /var/lib/dpkg/info /var/lib/dpkg/info_old2.新建 ...
- 每次新建项目出现appcompat_v7 解决方法
ADT升级版本后每次新建项目出现appcompat_v7 , 解决方案如下 问题生成:
- 用C#从数据库动态生成AdminLTE菜单的一种方法
当前的应用设计风格趋于Flat扁平化,很多基于BootStrap实现了很多UI非常漂亮的管理界面(Bootstrap admin template). 此核心文件开源在Github:https://g ...
- 炫酷的jQuery对话框插gDialog
js有alert,prompt和confirm对话框,不过不是很美体验也不是很好,用jQuery也能实现, 体验效果:http://hovertree.com/texiao/jquery/34/ 代码 ...
- 乱码引起的CSS失效原理,解决技巧。
由于一个中文是两个字符组成,在编码不一致的情况下会引发字符的“重新”组合,(半个汉字的编码字符与后面的字符组合生成新的“文字”)引发原本的结束符合“变异”,从而导致找不到结束符号,使得后面的CSS就会 ...
- node.js express安装及示例网站搭建
1.首先肯定是要安装Node.JS windows cmd依次输入如下命令: cd C:\Program Files\nodejs\ npm install -g expressnpm install ...
- 十种MYSQL显错注入原理讲解(二)
上一篇讲过,三种MYSQL显错注入原理.下面我继续讲解. 1.geometrycollection() and geometrycollection((select * from(select * f ...
- JavaScript学习(零)前引
一)概述 JavaScript是一个面向web的编程语言,一种解释性语言,边执行边解释.也是一种基于对象(Object)和事件驱动(EventDriven)的,安全性好的脚本语言,语法和java类似. ...
- tableView显示第一个cell有偏移问题
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 0 ...