`
imcb
  • 浏览: 4663 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

获取数据库用户表格信息

阅读更多
package com.augurit.codebulder.builder.bpo.imp;

import com.augurit.codebulder.util.db.imp.ConnectionManagerImpl;
import java.sql.Connection;
import java.util.*;
import java.sql.*;
import com.augurit.codebulder.builder.bean.Field;
import com.augurit.codebulder.builder.bpo.inf.InfGetDBData;


public class ImpGetDBData extends ConnectionManagerImpl implements InfGetDBData {
    /**
     * 获得用户表集合
     * @return List 用户表集合
     * @throws Exception
     */
    public List getTableList() throws Exception {
        List list = new ArrayList();
        Connection connection = null;
        PreparedStatement prestat = null;
        try {
            connection = this.getConnection();
            String sql = "select table_name from sys.user_tables t";
            prestat = connection.prepareStatement(sql);
            ResultSet rs = prestat.executeQuery();
            while (rs.next()) {
                Map map = new HashMap();
                String tablename = rs.getString("TABLE_NAME");
                if (tablename.indexOf("==") != -1 ||
                    tablename.indexOf("$0") != -1) {
                    continue;
                }
                map.put("name", tablename);
                map.put("comment", this.getTableComment(connection, tablename));
                map.put("comment", "");
                list.add(map);
//                System.out.println(rs.getString("TABLE_NAME"));
            }
            rs.close();
            prestat.close();
        } catch (Exception ex) {
            throw new Exception(ex.getMessage());
        } finally {
            if (connection != null) {
                connection.close();
                connection = null;
            }
        }
        return list;
    }

    /**
     * 获得字段信息集合
     * @return List
     * @throws Exception
     */
    public List getFieldList(String tablename) throws Exception {
        int showNum = 5;
        List list = null;
        Connection connection = null;
        PreparedStatement prestat = null;
        try {
            connection = this.getConnection();
            Map mappk = this.getTablePK(connection, tablename);
            Map mapcomment = this.getFieldComment(connection, tablename);
            String sql = "select * from " + tablename;
            prestat = connection.prepareStatement(sql);
            ResultSet rs = prestat.executeQuery();
            ResultSetMetaData ms = rs.getMetaData();
            int count = ms.getColumnCount();
            list = new ArrayList(count);
            for (int i = 1; i < count + 1; i++) {
                Field field = new Field();
                field.setFieldName(ms.getColumnName(i).toLowerCase());
                field.setFieldType(ms.getColumnType(i));
                field.setTypeName(ms.getColumnTypeName(i));
                boolean key = false;
                if (mappk.get(ms.getColumnName(i)) != null) {
                    key = true;
                }
                field.setKey(key);
                boolean empty = false;
                int temp = ms.isNullable(i);
                if (temp == ResultSetMetaData.columnNullable) {
                    empty = true;
                }
                field.setEmpty(empty);
                field.setSize(ms.getColumnDisplaySize(i));
                field.setPrecision(ms.getPrecision(i));
                field.setScale(ms.getScale(i));
                field.setComment((String) mapcomment.get(ms.getColumnName(i)));
                if (i <= showNum) {
                    field.setIsView(true);
                } else {
                    field.setIsView(false);
                }
                list.add(i - 1, field);
//                System.out.println(field);
            }
            rs.close();
            prestat.close();
        } catch (SQLException ex) {
            throw new Exception(ex.getMessage());
        } finally {
            if (connection != null) {
                connection.close();
                connection = null;
            }
        }
        return list;
    }

    /**
     * 获得表主键集合
     * @param connection Connection
     * @param tablename String
     * @return Map
     * @throws Exception
     */
    private Map getTablePK(Connection connection, String tablename) throws
            Exception {
        Map map = new HashMap();
        try {
            DatabaseMetaData dbMeta = connection.getMetaData();
            ResultSet pkRSet = dbMeta.getPrimaryKeys(null, null,
                    tablename.toUpperCase());
            while (pkRSet.next()) {
                map.put(pkRSet.getObject(4).toString(), "PK");
            }
            pkRSet.close();
        } catch (Exception ex) {
            throw new Exception(ex.getMessage());
        }
        return map;
    }

    /**
     * 获得指定表的描述信息集合
     * @param connection Connection
     * @param tablename String
     * @return String
     * @throws Exception
     */
    private String getTableComment(Connection connection, String tablename) throws
            Exception {
        PreparedStatement prestat = null;
        String tablecomment = "";
        try {
            String sql =
                    "select comments from sys.user_tab_comments t where table_name = '" +
                    tablename.toUpperCase() + "'";
            prestat = connection.prepareStatement(sql);
            ResultSet rs = prestat.executeQuery();
            rs.next();
            tablecomment = rs.getString("comments");
            tablecomment = (tablecomment == null) ? "" : tablecomment;
            rs.close();
            prestat.close();
        } catch (SQLException ex) {
            throw new Exception(ex.getMessage());
        }
        return tablecomment;
    }

    /**
     * 获得表字段的描述信息集合
     * @param connection Connection
     * @param tablename String
     * @return Map
     * @throws Exception
     */
    private Map getFieldComment(Connection connection, String tablename) throws
            Exception {
        Map map = new HashMap();
        PreparedStatement prestat = null;
        try {
            String sql =
                    "select column_name,comments from sys.user_col_comments t where table_name = '" +
                    tablename.toUpperCase() + "'";
            prestat = connection.prepareStatement(sql);
            ResultSet rs = prestat.executeQuery();
            while (rs.next()) {
                map.put(rs.getString("column_name"), rs.getString("comments"));
            }
            rs.close();
            prestat.close();
        } catch (SQLException ex) {
            throw new Exception(ex.getMessage());
        }
        return map;
    }

    public static void main(String[] args) {
        ImpGetDBData test = new ImpGetDBData();
        try {
//            test.getFieldList("person");
//            test.getTableList();
            System.out.println(java.sql.Types.NUMERIC);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}
分享到:
评论
1 楼 chenm_bj 2008-06-04  
高手,能有适用多种数据库的方法吗? 如获得表字段的描述信息集合getFieldComment目前只适用于Oracle.

相关推荐

    sqlite数据库与表格展示数据

    SQLite是一个轻量级的、开源的、嵌入式的关系...同时,通过RecyclerView和自定义Adapter,我们可以将这些数据以表格形式展示在用户界面,提供良好的用户体验。理解并熟练掌握这些知识点,对于Android应用开发至关重要。

    Android 导出数据库到Excel表格功能

    这可以通过SQLiteOpenHelper的getWritableDatabase()或getReadableDatabase()方法获取数据库实例,然后使用Cursor对象来执行SQL查询并获取结果集。 3. **文件操作**:Android提供了java.io.File类用于文件操作。在...

    C#连接数据库表格显示

    综上所述,"**C#连接数据库表格显示**"项目涵盖了数据库连接、数据查询、ASP.NET GridView控件的使用以及DropdownList控件的交互,这些都是ASP.NET Web应用程序开发的基础技能,对于理解Web应用的数据展示和用户交互...

    labview 数据库的表格创建,数据更新,数据删除,数据查询,数据插入,数据显示。

    在LabVIEW中与数据库交互是常见的需求,本教程将详细介绍如何使用LabVIEW进行数据库的表格创建、数据更新、数据删除、数据查询以及数据插入,并展示如何显示这些数据。 首先,我们需要理解LabVIEW中的数据库接口。...

    通过获取数据库信息动态生成树

    获取数据库信息通常通过SQL查询语句进行,可以获取表中的记录、字段信息等。为了动态生成树,我们需要根据业务需求设计合适的SQL语句,查询出需要展示的数据。 2. **数据结构转换**:从数据库获取的数据通常是表格...

    PYQT5+sqlite数据库+QTableWidget自定义表格显示

    这通常涉及到为`QTableWidget`的`cellClicked`信号绑定一个槽函数,该函数会根据点击的行和列获取对应的数据,并在新的窗口或者对话框中显示详细信息。 `my_db.py`可能是专门处理数据库操作的模块,包括连接数据库...

    servlet读取数据库代码到jsp页面表格示例

    本示例结合了Servlet、JSP和MySQL数据库,演示了如何从数据库读取数据并展示在网页表格中,同时实现了基本的数据操作功能:增、删、改、查。以下是关于这个示例的详细解释和相关知识点: 1. **Servlet**: Servlet是...

    前台实时获取数据库字典并展示.zip

    在IT行业中,数据库是存储和管理数据的核心工具,而实时获取数据库字典并展示则是一项重要的功能,尤其对于前端开发人员来说,能够实时查看数据库结构和内容有助于他们更好地理解和使用后端数据。在这个项目中,...

    易语言高级表格access数据库读写

    2. 表格操作:在Access数据库中,表格相当于数据表,可以通过`表打开`命令打开已有的表格,或者使用`表创建`命令创建新的表格。在表格中,我们可以执行增删改查(CRUD)操作。例如,`记录插入`用于添加新数据,`记录...

    易语言数据库表格打印(2003年大赛一等奖)

    数据库表格打印是数据库应用中的一个重要组成部分,它允许用户将存储在数据库中的数据以表格的形式打印出来,这对于数据分析、报告生成和信息共享非常关键。易语言提供了相应的接口和组件来实现这一功能,使得开发者...

    非常实用的JAVASCRIPT修改表格信息,然后更新数据库汇总

    这个“非常实用的JAVASCRIPT修改表格信息,然后更新数据库汇总”主题涵盖了几个关键知识点,包括DOM操作、事件处理、Ajax异步通信以及数据验证。 首先,DOM(Document Object Model)是HTML和XML文档的一种结构化...

    创建数据库.rar_-baijiahao_E4A DB数据库_e4a创建目录_e4a数据库 图片_e4a数据库表格

    在E4A中,数据库的管理是应用程序功能的重要组成部分,尤其是在处理用户数据、实现数据存储和检索时。本文将详细讲解如何在E4A中创建数据库,并涵盖从检测数据库文件到创建数据表的全过程。 首先,我们要理解E4A中...

    高级表格access数据库读写易语言源码

    Access数据库是Microsoft Office套件中的一个组件,它提供了一个用户友好的环境来创建、管理和操作数据。易语言(EasyLanguage)则是一种中文编程语言,它以简洁的语法和易学易用的特点,使得编程变得更加直观。本...

    eDNA 数据库用户手册

    **eDNA 数据库用户手册** eDNA(Environmental DNA)数据库是一种专门用于存储、管理和分析环境DNA数据的系统。环境DNA是指在环境中收集到的所有生物的遗传物质,它为生态学家和生物学家提供了一种无创性的方法来...

    导入Excel表格插入Oracle数据库

    - **错误处理和反馈**:在整个过程中,应有完善的错误处理机制,如捕获异常、记录日志,并将错误信息返回给前端,以便向用户反馈。 以上就是“导入Excel表格插入Oracle数据库”的核心知识点和实现步骤。在实际应用...

    C#爬虫获取网页中表格数据

    爬虫是指一种自动化的程序,可以模拟用户的行为来访问网站,获取网站上的信息。爬虫可以用于各种场景,如数据采集、监控网站更新、自动化任务等。 C#爬虫获取网页中表格数据 在本文中,我们将使用C#语言来爬取网页...

    java使用jdbc将数据库数据导出到csv文件.pdf

    我们首先获取数据库连接,然后执行 SQL 查询以获取数据库数据。然后,我们获取元数据信息,并将数据写入到 CSV 文件中。在处理数据时,我们需要特殊处理 TIMESTAMP 类型数据,并需要异常处理以避免程序崩溃。

    edb课堂数据库用户登录

    在“edb课堂数据库用户登录”系统中,我们关注的核心知识点主要集中在数据库操作、用户交互以及数据展示方面。以下是对这些关键部分的详细说明: 1. **子程序_读取学生成绩**:这个子程序是用于从数据库中提取学生...

    基于Myeclipse与MySQL数据库表格的增删改查

    - 当发生错误时,可以将错误信息返回到JSP页面,以友好的方式显示给用户。 9. **事务管理** - 如果涉及多条SQL语句的原子操作,可以使用数据库的事务管理,确保操作的完整性和一致性。 - 通过`Connection`对象的...

    动态获取数据库中的数据作为loadrunner的参数替换GetData.dll

    动态获取数据库中的数据作为参数,能够确保每次运行测试时,使用的数据都是不同的,这样更接近真实的用户行为。 1. **动态参数化**:在LoadRunner中,我们可以使用“VuGen”(Virtual User Generator)创建脚本,然后...

Global site tag (gtag.js) - Google Analytics