`
gshxsyq
  • 浏览: 20690 次
社区版块
存档分类
最新评论

通过JDBC获得表结构信息

阅读更多

通过JDBC取得数据库的连接,然后关键性的代码如下:

DatabaseMetaData databaseMetaData = connection.getMetaData();
resultSet =databaseMetaData.getColumns(null,null,"tableName".toUpperCase(),"%");
注意:连接数据库的时候设置remarksReporting为true。

 

import java.sql.Connection;   
import java.sql.DatabaseMetaData;   
import java.sql.DriverManager;   
import java.sql.PreparedStatement;   
import java.sql.ResultSet;   
import java.sql.SQLException;   
import java.util.Properties;   
  
import org.junit.Test;   
  
/**  
 * @description:  
 * @author syq  
 * @2012-8-23  
 */  
public class ExprotDBInfo {   
  
    @Test  
    public void testExprotDBInfo() {   
        Connection connection = null;   
        PreparedStatement statement = null;   
        ResultSet resultSet = null;   
  
        try {   
            Class.forName("oracle.jdbc.driver.OracleDriver");   
  
            Properties props = new Properties();   
            props.put("user", "orcl");   
            props.put("password", "orcl");   
            props.put("remarksReporting", "true");   
               
            /*connection = DriverManager.getConnection(  
                    "jdbc:oracle:thin:@localhost:1521:orcl", "zjpmsoa",  
                    "zjpmsoa");  
            StringBuffer sql = new StringBuffer();
            //通过查询的方法获得表结构信息,此种方法不够灵活而且不通用,只适用于oracle  
            sql.append("SELECT a.column_name,b.data_type||'('|| case b.data_type when 'NUMBER' then b.data_precision when 'VARCHAR2' then b.char_length end||','||b.data_scale||')' AS type,a.comments"  
                    + " FROM user_col_comments a , user_tab_columns b"  
                    + " WHERE a.table_name= b.table_name AND a.column_name =b.column_name AND a.table_name  =upper(?)"  
                    + " ORDER BY a.column_name");  
            statement = connection.prepareStatement(sql.toString());  
            statement.setString(1, "kd_vehicle_data");  
            resultSet = statement.executeQuery();*/  
            connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", props);   
            DatabaseMetaData databaseMetaData = connection.getMetaData();
            //获得指定tableName对应的列
            resultSet =databaseMetaData.getColumns(null,null,"tableName".toUpperCase(),"%");   
            /*ResultSetMetaData resultSetMetaData = resultSet.getMetaData();  
            for(int i =0;i<resultSetMetaData.getColumnCount();i++){  
                System.out.println(resultSetMetaData.getColumnTypeName(i+1)+"\t"+resultSetMetaData.getColumnLabel(i+1));  
            }*/  
            StringBuffer result = new StringBuffer();   
            while(resultSet.next()){   
                 result.append(resultSet.getString("COLUMN_NAME")).append("\t")   
                 .append(resultSet.getString("TYPE_NAME")).append("\t")   
                 .append(resultSet.getString("IS_NULLABLE")).append("\t")   
                 .append(resultSet.getString("REMARKS")).append("\t")   
                 .append("\n");   
            }   
            System.out.println(result.toString());   
               
        } catch (ClassNotFoundException e) {   
            // TODO Auto-generated catch block   
            e.printStackTrace();   
        } catch (SQLException e) {   
            // TODO Auto-generated catch block   
            e.printStackTrace();   
  
        } finally {   
            if (null != connection) {   
                try {   
                    connection.close();   
                } catch (SQLException e1) {   
                    // TODO Auto-generated catch block   
                    e1.printStackTrace();   
                }   
            }   
        }   
    }   
  
}  

 

 

分享到:
评论

相关推荐

    jdbc 读取表结构

    获取表的结构,无论是任何数据库,只要把驱动包加进去就可以了。

    java 读取表结构 mysql

    建立连接后,我们可以编写SQL查询来获取表结构。对于MySQL,可以使用`DESCRIBE`语句: ```java String tableName = "表名"; String query = "DESCRIBE " + tableName; Statement statement = connection....

    获取数据库中表结构信息

    通过以上介绍,我们可以看到在DB2中获取表结构信息并不复杂,只需要通过适当的命令或者编写简单的SQL查询即可实现。对于开发者而言,了解这些基本操作对于日常开发工作至关重要。希望本文能够帮助您更好地理解和掌握...

    使用jdbc获取数据库基础信息(附源码)

    除了获取表名,我们还可以执行其他查询,如获取表结构、查询数据等。例如,如果我们想获取某表`users`的列信息,可以执行`DESCRIBE users;`,然后处理结果集以获取列名和类型。 最后,别忘了在完成操作后关闭资源,...

    导出数据库的表结构到Excel

    这通常适用于有编程基础的用户,他们可以通过阅读源码来理解如何连接数据库、获取表结构信息,并将其转换为Excel格式。 Release包(ExportTableStructure--Release.rar)则可能是预编译的可执行文件或者已经打包好...

    EAS6.0表结构查看

    4. **编程接口**:对于开发人员,可以通过EAS6.0提供的API或SDK来获取表结构信息。例如,Java的JDBC接口允许开发者编写代码来查询数据库元数据,获取表结构。 在实际工作中,理解表结构对于以下任务至关重要: - *...

    JDBC数据同步

    例如,在电商系统中,商品库存信息可能分布在不同的数据库中,通过JDBC数据同步,可以确保所有数据库的商品库存状态实时更新,防止超卖情况发生。 ### JDBC基础 JDBC是Java API,提供了一套标准的接口和类,用于...

    自动对比2个数据库表结构差异

    2. 获取元数据:使用SQL语句(如`DESCRIBE`或`INFORMATION_SCHEMA`)获取表的结构信息。 3. 结构比较:遍历并比较两表的字段、数据类型、主键、索引和约束,记录差异。 4. 输出结果:将比较结果以报告形式展示,可能...

    Servlet +jsp+jdbc增删改查学生信息

    4. 查询结果或操作确认信息通过ModelAndView或者RequestDispatcher转发回JSP页面进行显示。 5. JSP页面根据接收到的数据渲染HTML,返回给用户。 通过这个项目,学习者可以深入理解Web开发的基本原理,包括MVC设计...

    MyBatis通过 JDBC连接 SQL server 数据库 最小例子

    MyBatis是一个流行的Java持久层框架,它简化了与数据库之间的交互,允许开发者将SQL查询直接集成到Java代码中。本教程将引导你通过JDBC...记得在运行代码之前,确保数据库中存在`User`表,并且表结构与你的查询匹配。

    数据库表结构导出word文档.zip

    2. SQL查询:执行SQL语句获取表结构信息。 3. 模板引擎:FreeMarker或其他类似的模板引擎,用于动态生成Word文档。 4. 文档转换:将数据和模板结合,生成Word格式的文档。 5. 配置管理:通过ini或properties文件管理...

    数据库表结构转word文档

    2. 获取元数据:执行SQL语句,如`DESCRIBE table_name`或`SELECT * FROM information_schema.columns`,获取表结构信息。 3. 构建Word文档:使用Apache POI等库创建Word文档,将表结构信息填充到文档中,包括表名、...

    实验八通过JDBC方式访问数据库

    实验八“通过JDBC方式访问数据库”是针对数据库系统概论的一个实践环节,旨在让学生掌握使用Java语言通过JDBC(Java Database Connectivity)接口来设计数据库应用程序,以及对数据库进行操作。JDBC是一种标准API,...

    jdbc连接程序实现不同数据库数据的迁移

    综上所述,通过JDBC连接程序实现数据库数据迁移是一个涉及多步骤的过程,包括连接数据库、编写查询、处理结果、批量插入、资源管理和错误处理。在实际操作中,应根据具体业务需求进行调整和优化,确保迁移的高效和...

    将oracle中的表结构导出的工具包

    4. **ojdbc6-11.2.0.1.0.jar** 和 **ojdbc14-10.2.0.4.0.jar**:这些是Oracle JDBC驱动程序,允许Java应用程序连接到Oracle数据库并执行SQL操作,包括获取表结构信息。 5. **poi-3.5-FINAL.jar**:Apache POI 是一...

    JDBC教程

    通过Connection对象的`getMetaData()`方法可以获得关于数据库的信息,如表结构、列信息等,这对于数据库迁移或自动化工具非常有用。 ### 8. 避免SQL注入 PreparedStatement的参数化特性可有效防止SQL注入攻击,...

    hive-jdbc-1.1.0驱动相关jar包

    4. 元数据访问:获取关于Hive数据库的结构信息,如表名、列名等。 5. 高级特性:支持事务、批处理、预编译语句等功能。 在动态加载Hive JDBC 1.1.0驱动时,我们需要确保包含所有必需的jar包。"test-hive1.1.0"可能...

    Java JDBC学生数据管理系统

    总的来说,Java JDBC学生数据管理系统是一个将Java编程、JDBC数据库访问技术以及可视化界面设计相结合的实用工具,为教育机构或个人提供了一种便捷的方式,管理学生信息数据库。通过学习和理解这个系统,开发者可以...

    SpringBoot + MybatisPlus 实现实体类转成数据库表结构,可直接运行

    总结,通过SpringBoot和MybatisPlus的结合,我们可以方便地从Java实体类生成数据库表结构,无需手动编写SQL脚本。这种方式对于快速构建原型或者在数据丢失后恢复表结构非常有用。在实际应用中,记得对重要数据进行...

Global site tag (gtag.js) - Google Analytics