通过jdbc取得数据库表结构信息
做制作开发平台时,首要的一点是如何取得数据库表结构信息。一般通用的做法就是通过JDBC中的ResultSetMetaData类来进行操作,当你取得了数据库表结构信息后,比如说表的每个字段名称,字段类型等。
首先取得数据库连接后取得DatabaseMetaData。
DatabaseMetaData dbmd = con.getMetaData();
con是一个数据库连接,直接通过连接信息取得。
然后我们就可以取当前数据库中的所有表:
ArrayList v = new ArrayList();
ResultSet rs = null;
String[] typeList = new String[] { "TABLE" };
rs = dbmd.getTables(catalog, schema, null, typeList);
for (boolean more = rs.next(); more; more = rs.next()) {
String s = rs.getString("TABLE_NAME");//取得表名
String type = rs.getString("TABLE_TYPE");
if (type.equalsIgnoreCase("table") && s.indexOf("$") == -1)
v.add(s);
}
取得表名我们再执行select * from tablename 的方法,取得结果集:
String sql = "select * from "+tableName;
Statement state = con.createStatement();
ResultSet rs = state.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData() ;
for(int i = 1; i <= rsmd.getColumnCount(); i++)
{
String colname = rsmd.getColumnName(i);
String typeName = rsmd.getColumnTypeName(i);
int itype = rsmd.getColumnType(i);
int size = rsmd.getColumnDisplaySize(i);
int precision=rsmd.getPrecision(i);
int n = rsmd.isNullable(i);
int scale=rsmd.getScale(i);
boolean nullable = true;
switch (n) {
case 0: // '/0'
nullable = false; //不为空
break;
case 1: // '/001'
nullable = true;
break;
default:
nullable = true;
break;
}
SQLColumn col = new SQLColumn(colname);
SQLType type = simpleType(typeName, itype);
if (type.allowsParameters())
type.setParameterString("" + size);
col.setType(type);
col.setIType(itype);
col.setSize(size);
col.setScale(scale);
col.setPrecision(precision);
col.setNullable(nullable);
col.setReadOnly(rsmd.isReadOnly(i));
col.setAutoIncrement(rsmd.isAutoIncrement(i));
col.setSearchable(rsmd.isSearchable(i));
col.setCurrency(rsmd.isCurrency(i));
col.setCaseSensitive(rsmd.isCaseSensitive(i));
col.setSigned(rsmd.isSigned(i));
col.setClassType(rsmd.getColumnClassName(i));
col.setDisName(rsmd.getColumnLabel(i));
if ( col.getDisName().length() > 0 )
col.setName(col.getDisName()) ;
columns.add(col);
}
以上操作就取得了表的每个字段信息。得到这些字段信息,就可以为数据库层的各种操作生成所需的代码了。
通过jdbc取得数据库表结构信息的更多相关文章
- Java 通过JDBC查询数据库表结构(字段名称,类型,长度等)
Java 通过JDBC查询数据库表结构(字段名称,类型,长度等) 发布者:唛唛家的豆子 时间:2012-11-20 17:54:02 Java 通过JDBC查询数据库表结构(字段名称,类型,长 ...
- 使用JDBC connect获取数据库表结构信息
1.这是生成代码的关键 引入maven依赖 <dependency> <groupId>mysql</groupId> <artifactId>mysq ...
- sql语句查询数据库表结构信息
开发中经常用到查询指定表及其字段的信息,以下是我整理的SQL语句查询方法,供自己平时使用也提供给大家参考! 1.适用MS SQL SERVER: SELECT 表名 = then d.name els ...
- java中访问mysql数据库中的表结构信息
package cn.hncu.meta; import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.Re ...
- Activiti工作流数据库表结构
Activiti工作流引擎数据库表结构 数据库表的命名 Acitiviti数据库中表的命名都是以ACT_开头的.第二部分是一个两个字符用例表的标识.此用例大体与服务API是匹配的. ACT_RE_*: ...
- sqlserver获取数据库表结构
SqlServer获取所有数据库,表,表结构 --获取所有数据库 SELECT * FROM Master..SysDatabases ORDER BY Name --获取test数据库下所有表 us ...
- c#通过oledb获取excel文件表结构信息
这个问题来自论坛提问,同理可以获得access等数据库的表结构信息. using System; namespace ConsoleApplication11 { class Program { pu ...
- activiti数据库表结构全貌解析
http://www.jianshu.com/p/e6971e8a8dad 下面本人介绍一些activiti这款开源流程设计引擎的数据库表结构,首先阐述:我们刚开始接触或者使用一个新的东西(技术)时我 ...
- K3数据库表结构
K3数据库表结构查看方法,直接在数据库中打开表 t_TableDescription,其中即各表及其与K3功能的对应关系 也可直接查询: select * from t_TableDescriptio ...
随机推荐
- Android开发手记(24) Log的使用及颜色的更改
在程序开发过程中,LOG是广泛使用的用来记录程序执行过程的机制,它既可以用于程序调试,也可以用于产品运营中的事件记录.在Android系统中,提供了简单.便利的LOG机制,开发人员可以方便地使用.本文 ...
- 8个不可不知的Mac OS X专用命令行工具(转)
OS X的终端下通用很多Unix的工具和脚本.如果从Linux迁移到OS X会发现很多熟悉的命令和脚本工具,其实并没有任何区别. 但是OS X也提供了很多其他系统所没有的特别的命令行工具.我们推荐8个 ...
- How to Enable or Disable a cell in DataGridview Row ?
Following link http://msdn.microsoft.com/en-us/library/ms171619.aspxhttp://windowsclient.net/blogs/f ...
- phalcon安装和输出 hello word
1:下载和安装Wampserver2.4-x86.exe 服务器: 2:到phalcon官方网站下载对应的dll文件 phalcon_x86_VC9_php5.4.0_1.2.5 我下的是这个版本 所 ...
- php 用于绘图使用的颜色数组
$colorArr = array(0x912CEE, 0x99ff00, 0x312520, 0x801dae, 0x25f8cb, 0xCC3333, 0x808080, 0xa29b7c, 0x ...
- json数组对象和对象数组(转)
转自:http://www.cnblogs.com/zhangji/archive/2011/09/02/2163811.html 一.Json的简单介绍 从结构上看,所有的数据最终都可以分成三种类型 ...
- 学生选课系统数据库SQL语句考试题
一. 设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...
- Redis系列(2)之数据类型
Redis系列(2)之数据类型 <Redis系列(1)之安装>中介绍了Redis支持以下几种数据类型,那么本节主要介绍学习下这几种数据类型的基本操作 字符串类型,string 散列类型,h ...
- 云方案,依托H3C彩虹云存储架构,结合UIA统一认证系统,实现了用户数据的集中存储和管理
客户的声音 资料云项目在迷你云基础上二次开发,通过使用云存储技术及文件秒传技术,对文件进行统一存储与管理,以达到节约文件管理成本.存储成本目的:通过有效的文件版本控制机制,以达到风险管控的目的:通过多 ...
- HDU1565 方格取数(1)(状态压缩dp)
题目链接. 分析: 说这题是状态压缩dp,其实不是,怎么说呢,题目数据太水了,所以就过了.手动输入n=20的情况,超时.正解是网络流,不太会. A这题时有个细节错了,是dp[i][j]还是dp[i][ ...