`
janedoneway
  • 浏览: 580517 次
  • 性别: 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);
   }

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

分享到:
评论

相关推荐

    数据库课程设计-图书管理系统-JAVA.docx

    这个小型图书管理系统是一个典型的Java Swing桌面应用程序,利用JDBC连接SQL Server数据库来实现图书和读者信息的管理。通过以上分析,可以看出该项目不仅涉及到了Java编程的基础知识,还包括了数据库管理和图形用户...

    计算机三级数据库(上机题加代码)

    掌握查询优化技巧,包括编写高效的SQL语句、合理设计表结构和选择合适的数据类型。 9. **数据库系统架构**:理解数据库服务器、数据库实例、数据库文件的构成,以及分布式数据库和云数据库的基本概念。 10. **...

    mysql数据库教程

    使用CREATE TABLE定义表结构,包括字段名、数据类型和约束;使用INSERT INTO添加数据;使用SELECT查询数据;以及UPDATE和DELETE语句来修改和删除数据。 4. **数据操作**:在掌握了基本的SQL语法后,你需要学习如何...

    ORACLE数据库面试题解答DBA数据库管理员JAVA程序员架构师必看.zip

    例如,DBA需要知道如何使用SQL*Plus进行数据库查询和管理,使用Explain Plan分析查询执行计划,使用索引来提高查询速度,以及如何通过ALTER TABLE和ALTER INDEX等命令调整表和索引结构。 在面试中,关于Oracle的...

    仅供学习使用,数据库连接软件文档。

    这通常通过数据库连接驱动程序实现,例如JDBC(Java Database Connectivity)用于Java,ODBC(Open Database Connectivity)用于多种编程语言,或者Python的pymysql和psycopg2库等。 学习数据库连接,我们需要掌握...

    全国计算机三级——数据库技术分章节考试要点总结

    10. **数据库应用开发**:这部分讲解如何使用数据库API(如JDBC或ODBC)进行数据库编程,以及如何利用面向对象技术开发数据库应用。 11. **案例分析与实践**:通过实际的数据库设计和应用案例,帮助考生将理论知识...

    计算机三级数据库历年真题(03-08)

    6. **数据库应用开发**:这部分内容通常涵盖如何使用数据库API(如JDBC、ODBC)进行应用程序开发,以及如何设计和实现数据库驱动的Web应用。考生需要理解数据库连接池、事务处理在应用中的实现,以及如何利用存储...

    计算机等级考试四级数据库重难点

    关系型数据库是最常见的类型,其核心原理是基于关系模型,以表格形式存储数据,并通过SQL(结构化查询语言)进行操作。理解数据库的基本术语,如实体、属性、键、索引和关系,是学习数据库的基础。 接下来,我们...

    图书馆管理系统

    系统的数据库表结构合理划分,包括用户表、参数表、读者类型表、图书信息表、借阅记录表等。 本系统使用的开发工具包括Eclipse IDE(具体版本为6.0.1),结合J2EE技术,使用了包括但不限于Java 2平台企业版(Java 2...

    人才招聘网站的设计与实现

    项目提供了“毕业设计外发.sql”文件,这是数据库脚本,包含了系统所需的所有表结构和初始数据。可能包括用户表、职位表、简历表、应聘记录表等,用于存储和管理各类信息。 五、学习价值 该项目适合Java Web初学者...

    jsp网上书店(包含源码和数据库)

    - `db`目录:可能包含数据库脚本,用于创建和初始化数据库表。 【学习与实践建议】 1. 阅读并理解每个JSP页面的逻辑,观察如何使用内置对象和脚本元素处理用户请求。 2. 分析Servlet代码,了解如何处理HTTP请求和...

    数据库课程设计总结与体会.pdf

    同时,通过Java的JDBC(Java Database Connectivity)技术,我们实现了程序与数据库的连接,使得数据操作得以在代码层面流畅执行。这种面向对象的编程方式使得代码结构清晰,易于理解和维护。 在课程设计过程中,...

    JAVASQL教学管理系统[整理].pdf

    将E-R模型转换为具体的数据库表结构,确定每个表的字段、数据类型和约束条件,如学生的ID、姓名、学号,课程的ID、名称、学分等。 2.4 物理结构设计 考虑数据库的存储和访问效率,进行索引设计、分区策略等优化,...

    MYSQL数据库安装和连接图解

    掌握这些基础知识后,你就可以开始创建数据库、设计表结构、执行查询和管理数据了。记得在实践中不断探索和学习,MySQL的世界非常广阔,包含了事务处理、视图、存储过程、触发器等更高级的主题。祝你在MySQL的学习...

    数据库课程设计总结与体会.docx

    而在Java语言中,我们利用GUI图形用户界面和JDBC(Java Database Connectivity)来建立与数据库的连接,实现了数据的增删改查操作。 在两周的课程设计过程中,我们首先进行了系统需求分析和功能设计,针对《小型...

    Java面试宝典

    ### Java面试宝典之数据库结构详解 #### 一、引言 随着信息技术的快速发展,Java作为一门广泛应用的...通过本文的学习,希望能够帮助大家更好地理解Java中的数据库结构及相关知识点,并在未来的职业发展中取得成功。

Global site tag (gtag.js) - Google Analytics