jdbctemplate 获取数据表结构的方法&注意事项

方法一 直接查询:

SqlRowSet srcSqlRowSet = srcJdbcTemplate.queryForRowSet("SELECT * FROM tablename LIMIT 0"); //注意limit 0更合适
List<ColumnMetaData> columneMetaList = new LinkedList<ColumnMetaData>();
int columnCount;
SqlRowSetMetaData sqlRowSetMetaData = sqlRowSet.getMetaData();
columnCount = sqlRowSetMetaData.getColumnCount();
for (int i = 1; i <= columnCount; i++) {
    columneMetaList.add(new ColumnMetaData(sqlRowSetMetaData.getColumnName(i), sqlRowSetMetaData.getColumnType(i), sqlRowSetMetaData.getColumnTypeName(i))); //获取字段的名称、类型和描述
}
Collections.sort(columneMetaList);

方法一的ColumnMetaData类代码如下:

public class ColumnMetaData implements Comparable<ColumnMetaData> {

    private String name; // 字段名称
    private int type; // 字段类型
    private String typeName; // 字段类型名称
    private Object value; // 值
        public ColumnMetaData(String columnName, int valueType, String typeName) {
        this.name = columnName;
        this.type = valueType;
        this.typeName = typeName;
    }
}

方法二 使用RowCountCallbackHandler查询

String sql = "select * from "+ tableName + " limit 0";
RowCountCallbackHandler rcch = new RowCountCallbackHandler();
this.jdbcTemplateDao.query(sql, rcch);
String[] coloumnName = rcch.getColumnNames();
int[] coloumnType = rcch.getColumnTypes();  

方法二效率高,但麻烦的是拿到了类型是数字,如果要获得字段的描述信息,比如:int还是varchar等,需要一个对照关系类:

public class SqlTypeAdapter {
public static String getTypeName(int type) throws SQLException {
        switch (type) {
            case Types.ARRAY:
                break;
            case Types.BIGINT:
                return "BIGINT";
            case Types.BINARY:
                return "BINARY";
            case Types.BIT:
                return "BIT";
            case Types.BLOB:
                return "BLOB";
            case Types.BOOLEAN:
                return "BOOLEAN";
            //..代码太多就不多写啦default:
                break;
        }
        return "VARCHAR";
    }
}
时间: 2024-08-28 10:02:00

jdbctemplate 获取数据表结构的方法&注意事项的相关文章

jdbcTemplate 获取数据表结构

jdbcTemplate 操作方法 Java代码   /** *1.方法一: */ String sql = "select * from "+ tableName; //RowCountCallbackHandler rcch = new RowCountCallbackHandler(); //this.jdbcTemplateDao.query(sql, rcch); //String[] coloumnName = rcch.getColumnNames(); //int[] 

PHP mysqli获取数据表以及表结构

<?php$mysqli = new mysqli('localhost','root','','le');$result = $mysqli->query('SHOW TABLES');//执行查询语句//输出此数据库中表结构$tables = array();while($arr = $result->fetch_assoc()){ //编辑查询结果 $tables[] = $arr;}echo '<br/>';//通过字段名获取数据表结构$result = $mysql

JFinal里得到表结构的方法总结

JFinal里得到表结构的方法总结: 1.得到已经配置的Model类的表结构.(推荐用法).如下,定义一个User的Model类,这样就可以得到Model类的表结构了.具体实现不明白,请高手指导. public void tableMappingTest(){  Table table = TableMapping.me().getTable(User.me.getClass());    renderText(table.getColumnTypeMap().toString());   }

【转】Informix数据表结构分析资料整理之约束查询代码

原文地址:http://blog.csdn.net/xqf222/article/details/6271219 本文主要整理了Informix数据库相关系统表数据,已分析整个Informix数据表结构,同时方便代码自动生成.提示一:systables 存放Informix数据库中所有数据表相关数据 提示二:sysconstraints 存放Informix数据库中所有约束相关数据 --获取所有用户表的主键约束名称select a.tabname,b.constrname,b.* from sy

深度剖析Zabbix Web scenarios数据表结构

深度剖析Zabbix Web scenarios数据表结构 前言 因开发需求,需要解析Zabbix web监控数据表结构:因为网上关于Zabbix数据表结构解析的比较少,所以心血来潮写了一篇作为记录. 突破口 对Zabbix数据库表结构做解析的时候,我有个习惯,直接针对某个itemid怼. 这次当然不例外,随便找了个Zabbix web itemid. 直接查数据库里有哪些表 show tables like "%http%"; +---------------------------

使用jeesite框架写一个树结构的列表页面(一般的数据表结构)

先上图,看一下需要完成的列表页的效果 以区域树结构列表为例子,大致就是要完成这个效果 1.做这个需求之前,我大致阅读了jeesite官方文档( https://jeesite.gitee.io/docs/)关于树表结构的文档(带有树表两个字的都看了看),查看了jeesite框架中自带的页面实例,又查看了项目中一些运用了树结构的页面以及后台代码. 按照文档走,我搞不出来这个东西...,为什么别的页面用得好好的呢???最后发现,我的数据表结构有点问题, jeesite的这个树结构如果要直接使用的话,

oracle表空间基本命令,修改数据表结构基本命令

表空间基本命令 --创建表空间   初始化大小10M  自动增长5M  最大50M create tablespace duan datafile 'F:\oracle\product\10.2.0\oradata\orcl\duan.dbf' size 10M autoextend on next 5M maxsize 50M; --查询表空间的地址和空间名称 select file_name,tablespace_name from dba_data_files order by file_

如何查看数据表及数据表结构

我们创建好了数据表,那么我们该怎么去查看数据表列表呢? 一.查看数据表列表的语法结构 SHOW TABLES [FROM db_name] [LIKE 'pattern' | WHERE expr] FROM db_name表示,我们不仅可以查看当前数据库里的数据表,还可以查看别的数据库里的数据表 mysql> show tables;+----------------+| Tables_in_test |+----------------+| tb1 |+----------------+1

Linq技术三:Linq to Object 和生成数据表的扩展方法

这篇来谈论一下Linq第三个方面的应用:Linq to Object,只要是继承了IEnumerable或IQueryable接口的Object都能使用Linq特性进行操作.在操作过程当中可能很多人都觉得不好调试不能实时地观察结果数据集,想把IQuery的Linq查询语句转换成数据表DataTable,要怎么实现转换呢?来看一下. 先来说一场景解释一下为什么需要用Linq来解决一些问题,能解决一些什么样的问题,相对于SQL,DataTable等一些传统操作方式有哪些优势? 场景:目前主要数据源有