jdbc获取数据表表结构
2011-10-15 16:40
148 查看
做制作开发平台时,首要的一点是如何取得数据库表结构信息。一般通用的做法就是通过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);
}
其中的rs.getString("TABLE_NAME");方法就是取得表名。
取得表名我们在执行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);
}
以上操作
首先取得数据库连接后取得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);
}
其中的rs.getString("TABLE_NAME");方法就是取得表名。
取得表名我们在执行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);
}
以上操作
相关文章推荐
- Java使用JDBC获取数据并打印出来
- 后台获取的json数据转换成树结构数据
- MySQLl命令desc:获取数据表结构
- ios-day12-01(ios开发中的数据存储的常用方式有哪些、应用沙盒目录结构、应用沙盒目录路径的常见获取方式)
- JDBC中获取数据表的信息
- JDBC链接本地MySQL数据库,创建表结构并添加数据和查询数据
- (笔记)Mysql命令desc:获取数据表结构
- JDBC之数据库的增,删,改,查, 搜, 批量执行,获取表结构,获取某一用户下所有的表,滚轴操作的封装
- java的JDBC如何获取的数据的条数
- JDBC(二)--批处理/JDBC获取自增长值/处理大数据文件/事务
- 【Cocos2d-x lua篇004】获取Lua表结构数据
- JDBC解析3_获取数据连接信息
- 转jmeter 性能测试 JDBC Request (查询数据库获取数据库数据) 的使用
- 干货 把ajax获取的数据转化成树状结构(并做成多级联动效果)
- 通过jdbc获取数据库中的表结构 主键 各个表字段类型及应用生成实体类
- JDBC(一) 简介与获取数据连接
- 数据结构——获取栈的最小值
- 一种通过jdbc获取数据库结构的方法
- JDBC 获取被插入数据的主键ID值
- Javascript - 获取Json结构的表单数据