`
wangemperor
  • 浏览: 39936 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

jdbc读取数据库里的表信息之姊妹篇(读取字段和主键信息)

 
阅读更多

 

 

 

前几天给大家推出了jdbc读取数据库里的信息--表信息,受到大家关注,被推荐至blog精华。

 

 

 

在这篇文章里,主要给大家介绍的是,通过DatabaseMetaData进行调用,从而获得整个数据库里的table的信息,该文可详见http://blog.csdn.net/inthirties/archive/2009/10/09/4646557.aspx , 通过这个方法,我们可以用java得到类似数据库字典的功能。 不过由于篇幅有限,所以上篇文章,仅仅讲到表的整体信息,有了整体的表字典,有研究兴趣的朋友马上就想到,那我们能不能再进一步,得到表的具体的结构信息 叻,比如,字段,主外键,索引字段这些表内的具体信息叻。 那么我们就一起进一步探讨有关读取表里具体信息的方法。

 

 

 

当然还是用上次介绍的DatabaseMetaData,

 

 

 

首先我们一起看看表的字段信息

 

表的字段信息

 

可以用

 

dbMeta.getColumns(catalog, schemaPattern, tableNamePattern, columnNamePattern) 

 

tableNamePattern 表名 
columnNamePattern 指定的字段名 如果所有的 放空 

 

 

 

这里每个参数的详细含义,可以参考java doc。

 

 

 

如下sample代码

 

 

result = dbMeta.getColumns(null, null, table, null); 


while(result.next()) 

System.out.print(result.getObject("TABLE_CAT")+" "); 
System.out.print(result.getObject("TABLE_SCHEM")+" "); 
System.out.print(result.getObject("TABLE_NAME")+" "); 
System.out.print(result.getObject("COLUMN_NAME")+" "); 
System.out.print(result.getObject("DATA_TYPE")+" "); 
System.out.print(result.getObject("TYPE_NAME")+" "); 
System.out.print(result.getObject("COLUMN_SIZE")+" "); 
System.out.print(result.getObject("BUFFER_LENGTH")+" "); 
System.out.print(result.getObject("DECIMAL_DIGITS")+" "); 
System.out.print(result.getObject("NUM_PREC_RADIX")+" "); 

System.out.print(result.getObject("NULLABLE")+" "); 
System.out.print(result.getObject("REMARKS")+" "); 
System.out.print(result.getObject("COLUMN_DEF")+" "); 
System.out.print(result.getObject("SQL_DATA_TYPE")+" "); 
System.out.print(result.getObject("SQL_DATETIME_SUB")+" "); 
System.out.print(result.getObject("CHAR_OCTET_LENGTH")+" "); 
System.out.print(result.getObject("ORDINAL_POSITION")+" "); 
System.out.print(result.getObject("IS_NULLABLE")+" "); 
System.out.print(result.getObject("SCOPE_CATALOG")+" "); 
System.out.print(result.getObject("SCOPE_SCHEMA")+" "); 
System.out.print(result.getObject("SCOPE_TABLE")+" "); 
System.out.print(result.getObject("SOURCE_DATA_TYPE")+" "); 
System.out.print(result.getObject("IS_AUTOINCREMENT")+" "); 

System.out.println(); 
}

 

 

 

 

 

上面都是JDBC标准中的meta信息,具体的值,需要参考数据库jdbc厂商的实现。

 

 

 

 

 

除了读取基本的字段信息。DatabaseMetaData还提供了查找主键的接口

 

dbMeta.getPrimaryKeys(catalog, schema, tablename); 

 

这里的tablename就是你想要读取的数据库表

 

 

 

 

 

通过这个api我们可以查看一个表的主键信息。

 

 

 

比如

 

 

 

DatabaseMetaData dbMeta = conn.getMetaData(); 

ResultSet pkRSet = dbMeta.getPrimaryKeys(null, null, "test"); 

int column = pkRSet.getMetaData().getColumnCount(); 

System.out.println(" =================== Primary Key ["+table+"] ================"); 

while(pkRSet.next()) 

System.out.print(pkRSet.getObject("TABLE_CAT")+" "); 
System.out.print(pkRSet.getObject("TABLE_SCHEM")+" "); 
System.out.print(pkRSet.getObject("TABLE_NAME")+" "); 
System.out.print(pkRSet.getObject("COLUMN_NAME")+" "); 
System.out.print(pkRSet.getObject("KEY_SEQ")+" "); 
System.out.print(pkRSet.getObject("PK_NAME")+" "); 

System.out.println(); 

 

 

 

 

 

程序结果如下

 

 

 

CATLOG SCHEMA TABLE_NAME  COLUMN_NAME  KEY_SEQ  PK_NAME

poc        null         test_parent   id                       1               PRIMARY 

 

 

 

这里是poc这个schema里的表test_parent的主键信息,有一个主键,主键的字段在id字段上。这里如果是复合主键的话,会有多个信息。

 

通过KEY_SEQ来反映出主键的顺序关系。

 

 

 

这里的PK_NAME是这个主键的名称,在Mysql里主键不指定都用这个PRIMARY代替了。在Oracle里可以测试一下不同之处。

 

 

 

 

 

在 这个文章里,我们一起看到了字段信息和主键信息。 外键信息,也是一个非常重要而且有意义的信息,可以反映出表之间的关系,所以databaseMetaData提供的方法更为细致。 在下一篇文章里,我们再继续给大家介绍--jdbc读取数据库里的表信息之姊妹篇(读取外键信息)。

 

 

 

 

 

分享到:
评论

相关推荐

    JDBC读取数据库元数据,自动生成JAVA实体类

    JDBC读取数据库元数据,生成JAVA实体类

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

    Java 是一种广泛使用的编程语言,它提供了多种方式来处理数据库数据,而 JDBC(Java Database Connectivity)是 Java 中连接数据库的标准 API 之一。将数据库数据导出到 CSV 文件是一种常见的数据交换格式,它可以被...

    java 读取FoxPro数据库数据,JDBC连接方法

    java jdbc读取FoxPro数据库数据,完整类以及FoxPro数据库数据遍历。JDBC读取FoxPro数据库数据

    JDBC数据类型与数据库字段对应表——mysql篇

    JDBC数据类型与数据库字段对应表——mysql篇 数值型 整型 JDBC tinyint java.lang.Integer smallint mediumint java.lang.Long int bigint java.math.BigInteger

    基于JDBC从数据库中读取数据,在百度地图批量标注地点例程

    基于JDBC从数据库中读取数据,在百度地图批量标注地点例程

    自动读取mysql数据库字段并自动生成java属性和set和get方法

    当开发过程中涉及到大量的数据库表和字段时,手动编写Java实体类(Entity)的属性、getter和setter方法会变得极其繁琐和耗时。为了提高开发效率,一种常见的解决方案是实现一个工具或框架,能够自动从数据库读取字段...

    java程序读取数据库表 转为sql文件 仅供参考 不得宣传

    在Java编程环境中,读取数据库表并将其转换为SQL文件是一项常见的任务,特别是在数据迁移、备份或测试场景中。下面将详细介绍如何实现这个过程,并基于给出的标题和描述进行讲解。 1. **配置文件读取**: 首先,...

    数据库读取clob字段

    ### 数据库读取CLOB字段 #### 概述 在Oracle数据库中,CLOB(Character Large Object)是一种用于存储大量文本数据的数据类型。CLOB能够容纳4GB的文本信息,适用于存储如文章、报告或者XML文档等大型文本数据。...

    ODBC-JDBC 桥读取Access数据库

    ODBC-JDBC 桥读取 Access 数据库 ODBC-JDBC 桥是一种常用的技术,它可以将 Java 应用程序与非 Java 数据库集成。ODBC(Open Database Connectivity)是一种标准接口,用于连接各种类型的数据库,而 JDBC(Java ...

    JDBC数据类型与数据库字段对应表——SQL Server篇

    JDBC数据类型与数据库字段对应表——SQL Server篇 数值型 整型 JDBC tinyint java.lang.Integer smallint int bigint java.lang.Long mediumint java.lang.Long

    Java源码获取数据库中表的字段信息

    以下是一个简单的示例代码,演示如何使用Java和JDBC获取MySQL数据库中表的字段信息: ```java import java.sql.*; public class FieldInfoExtractor { public static void main(String[] args) { String url = ...

    spark jdbc 读取并发优化

    然而,在使用Spark与数据库交互时,尤其是使用JDBC(Java Database Connectivity)读取数据时,如果不优化并发度,很容易造成性能瓶颈。特别是在面对大规模数据集时,单线程任务过重会导致任务执行缓慢甚至挂起,...

    java jdbc,java连接数据库,读取配置信息

    以上就是关于Java JDBC连接数据库以及读取配置信息的相关知识点,包括JDBC的基本概念、连接步骤、配置信息的读取以及最佳实践。在实际开发中,理解并熟练掌握这些知识对于编写健壮的数据库应用程序至关重要。

    jsp中jdbc数据库连接

    jdbc连接数据库jdbc连接数据库jdbc连接数据库jdbc连接数据库jdbc连接数据库jdbc连接数据库jdbc连接数据库jdbc连接数据库jdbc连接数据库jdbc连接数据库jdbc连接数据库jdbc连接数据库jdbc连接数据库jdbc连接数据库jdbc...

    利用JDBC备份和还原MYSQL数据库

    利用JDBC连接数据库,不依耐mysql的shell命令, 适合b/s 服务器备份

    Struts用JDBC的Blob字段保存和读取Oracle数据库

    ### Struts 使用 JDBC 的 Blob 字段保存和读取 Oracle 数据库 #### 背景介绍 在企业级应用开发中,经常会遇到需要处理文件上传下载的情况。这些文件可能包括图片、文档等各种类型的数据。传统的做法是将文件保存到...

    jdbc-数据库连接和文件配置

    通过以上详细的介绍和示例代码,我们不仅了解了JDBC的基本原理和核心组件,还掌握了如何使用JDBC进行数据库连接和文件配置的具体步骤。这对于Java开发者来说,是进行数据库操作时不可或缺的知识点。

    作业6 JSP JDBC操作数据库

    作业6 JDBC操作数据库 作业类型:验证性实验 实验目的:理解JDBC接口操作数据库的方法,熟练掌握数据的增删改查。 实验内容: 1. 在MySQL或其他DBS中创建一个数据库TestDB,其中创建表user,表至少3个字段(编号,...

    JDBC读取数据库元数据,生成JAVA实体类,SQL语句,Mybatis动态sql语句

    JDBC读取数据库元数据,生成JAVA实体类,SQL语句,Mybatis动态sql语句,详细内容见博客地址https://blog.csdn.net/zi971553/article/details/82862039

Global site tag (gtag.js) - Google Analytics