`
janedoneway
  • 浏览: 570323 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

如何通过JDBC取得数据库表结构信息

    博客分类:
  • Java
 
阅读更多

From:http://blog.csdn.net/joeyshi/article/details/4138466

做制作开发平台时,首要的一点是如何取得数据库表结构信息。一般通用的做法就是通过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);
   }

以上操作就取得了表的每个字段信息。得到这些字段信息,就可以为数据库层的各种操作生成所需的代码了。

分享到:
评论

相关推荐

    网上书店管理信息系统-数据库课程设计.doc

    、发货方式) 第三章 功能分析 第四章 系统实现 4、1 数据库连接 本软件使用 jdbc 连接数据库,基本思想为数据库中每个表建立一个 Connectio类, 当要对表中数据进行操作时,创建相关记录集,即可引用类中得响应...

    java程序是怎么操作数据库的,可以以常用据库为例,求详细解答,最好能举例。

    //取得数据库中的数据 System.out.println(s + " " + f); /*String t = rs.getString(1); String l = rs.getString(2); System.out.println(t + " " + l);*/ /*jdbc提供了两种方法识别字段,一种是使用getXXX...

    网上书店管理信息系统-数据库课程设计报告.doc

    系统分析3 2.1需求分析3 2.1.1系统需求3 2.1.2功能需求3 2.1.3数据结构4 2.2概念结构设计(E—R图)5 2.4逻辑结构设计(关系模式---关系)8 第三章 功能分析8 第四章 系统实现9 4.1 数据库连接9 4.2主界面9 4.3 创建...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    我们掌握了数据库及其应用技术、数据库原理、计算机网络技术等课程,对数据库的设计、应用、维护及局域网的组成有了深刻的认识与一定的动手实践能力,考取了信息处理、程序设计、数据库技术等国家IT认证。...

    JAVA语言程序设计课程标准.doc

    "10% "装箱、拆箱、集合及泛型 "作业提交及代码评审 " " "7 "JDBC "1、使用JDBC操作数据库 2、JDBC事务 "12% "操作数据库、事务 "笔试或在线考试 "12% "JDBC访问数据库步骤、JDBC事务 "作业提交及代码评审 " " "8 ...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 上

    5.7.1、创建数据库表 5.7.2、程序实现思路 5.7.3、程序实现 5.8、本章摘要 5.9、开发实战讲解(基于Oracle数据库) 第6章 JSP内置对象 6.1、JSP内置对象概览 6.2、四种属性范围 6.2.1、page属性范围...

    MLDN+李兴华+Java+Web开发实战经典.part3.rar )

    5.7.1、创建数据库表 5.7.2、程序实现思路 5.7.3、程序实现 5.8、本章摘要 5.9、开发实战讲解(基于Oracle数据库) 第6章 JSP内置对象 6.1、JSP内置对象概览 6.2、四种属性范围 6.2.1、page属性范围...

    李兴华 java_web开发实战经典 源码 完整版收集共享

    5.7.1、创建数据库表 5.7.2、程序实现思路 5.7.3、程序实现 5.8、本章摘要 5.9、开发实战讲解(基于Oracle数据库) 第6章 JSP内置对象 6.1、JSP内置对象概览 6.2、四种属性范围 6.2.1、page属性范围...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 下

    5.7.1、创建数据库表 5.7.2、程序实现思路 5.7.3、程序实现 5.8、本章摘要 5.9、开发实战讲解(基于Oracle数据库) 第6章 JSP内置对象 6.1、JSP内置对象概览 6.2、四种属性范围 6.2.1、page属性范围...

    李兴华Java Web开发实战经典.pdf (高清版) Part1

    5.7.1、创建数据库表 5.7.2、程序实现思路 5.7.3、程序实现 5.8、本章摘要 5.9、开发实战讲解(基于Oracle数据库) 第6章 JSP内置对象 6.1、JSP内置对象概览 6.2、四种属性范围 6.2.1、page属性范围...

    李兴华 Java Web 开发实战经典 高清扫描版Part3

    5.7.1、创建数据库表 5.7.2、程序实现思路 5.7.3、程序实现 5.8、本章摘要 5.9、开发实战讲解(基于Oracle数据库) 第6章 JSP内置对象 6.1、JSP内置对象概览 6.2、四种属性范围 6.2.1、page属性范围...

    ssh(structs,spring,hibernate)框架中的上传下载

     特别需要注意的是:数据库表为Blob类型的字段在Tfile中的fileContent类型为byte[]。Tfile的Hibernate映射文件Tfile.hbm.xml放在Tfile .java类文件的相同目录下:  代码 2 领域对象映射文件 1. 2. !DOCTYPE ...

    李兴华Java Web开发实战经典(高清版) Part2

    5.7.1、创建数据库表 5.7.2、程序实现思路 5.7.3、程序实现 5.8、本章摘要 5.9、开发实战讲解(基于Oracle数据库) 第6章 JSP内置对象 6.1、JSP内置对象概览 6.2、四种属性范围 6.2.1、page属性范围...

    java web 视频、电子书、源码(李兴华老师出版)

    5.7.1、创建数据库表 5.7.2、程序实现思路 5.7.3、程序实现 5.8、本章摘要 5.9、开发实战讲解(基于Oracle数据库) 第6章 JSP内置对象 6.1、JSP内置对象概览 6.2、四种属性范围 6.2.1、page属性范围...

    办公用品管理系统(JAVA+JSP+servlet).rar

    其目的是尽可能充分利用现代技术资源与信息资源,提高政府部门行政管理工作效率和质量,辅助决策,以取得更好的工作效果。办公自动化系统是电子政务的基础,主要是辅助解决办公室事务的时间管理、成本管理、质量管理...

    Java开发详解.zip

    031503_【第15章:Java反射机制】_反射应用——取得类的结构笔记.pdf 031504_【第15章:Java反射机制】_Java反射机制的深入研究笔记.pdf 031505_【第15章:Java反射机制】_动态代理笔记.pdf 031506_【第15章:Java...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

     KAREN MORTON 研究人员、教育家及顾问,Fidelity信息服务公司的资深数据库管理员和性能调优专家。她从20世纪90年代初就开始使用Oracle,从事 Oracle的教学工作也已经超过10年的时间。她是Oracle ACE,也是...

    J2EE中文版指南 CHM格式 带全文检索

    通过request取得信息 161 构造Responses 162 过滤请求及响应 163 编写Filter 163 编写自定义的请求与响应 165 指定filter映射 166 调用其它网络资源 167 响应中包含其它资源 167 转移控制到其它网络组件 168 访问Web...

Global site tag (gtag.js) - Google Analytics