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

JDBC的那点事之DatabaseMetaData之获取表的所有列名

阅读更多

获取数据库指定表的所有列及相应的信息:

(以MySQL和Oracle为例,其他类型的数据库接触不多,不做解释)

Connection接口中提供了DatabaseMetaData接口:

提供:getColumns()方法,该方法需要传进4个参数:

第一个是数据库名称,对于MySQL,则对应相应的数据库,对于Oracle来说,则是对应相应的数据库实例,可以不填,也可以直接使用Connection的实例对象中的getCatalog()方法返回的值填充;

第二个是模式,可以理解为数据库的登录名,而对于Oracle也可以理解成对该数据库操作的所有者的登录名。对于Oracle要特别注意,其登陆名必须是大写,不然的话是无法获取到相应的数据,而MySQL则不做强制要求。

第三个是表名称,用于传进想要查找的表

第四个是列类型,为空时,获取表对应的所有列,当不为空的时候获取该值的列的所有信息。

它返回一个ResultSet对象,有23列,详细的显示了表的类型:

TABLE_CAT String => 表类别(可为 null)

TABLE_SCHEM String => 表模式(可为 null)

TABLE_NAME String => 表名称

COLUMN_NAME String => 列名称

DATA_TYPE int => 来自 java.sql.Types 的 SQL 类型

TYPE_NAME String => 数据源依赖的类型名称,对于 UDT,该类型名称是完全限定的

COLUMN_SIZE int => 列的大小。

BUFFER_LENGTH 未被使用。

DECIMAL_DIGITS int => 小数部分的位数。对于 DECIMAL_DIGITS 不适用的数据类型,则返回 Null。

NUM_PREC_RADIX int => 基数(通常为 10 或 2)

NULLABLE int => 是否允许使用 NULL。

columnNoNulls - 可能不允许使用 NULL 值

columnNullable - 明确允许使用 NULL 值

columnNullableUnknown - 不知道是否可使用 null

REMARKS String => 描述列的注释(可为 null)

COLUMN_DEF String => 该列的默认值,当值在单引号内时应被解释为一个字符串(可为 null)

SQL_DATA_TYPE int => 未使用

SQL_DATETIME_SUB int => 未使用

CHAR_OCTET_LENGTH int => 对于 char 类型,该长度是列中的最大字节数

ORDINAL_POSITION int => 表中的列的索引(从 1 开始)

IS_NULLABLE String => ISO 规则用于确定列是否包括 null。

YES --- 如果参数可以包括 NULL

NO --- 如果参数不可以包括 NULL

空字符串 --- 如果不知道参数是否可以包括 null

SCOPE_CATLOG String => 表的类别,它是引用属性的作用域(如果 DATA_TYPE 不是 REF,则为 null)

SCOPE_SCHEMA String => 表的模式,它是引用属性的作用域(如果 DATA_TYPE 不是 REF,则为 null)

SCOPE_TABLE String => 表名称,它是引用属性的作用域(如果 DATA_TYPE 不是 REF,则为 null)

SOURCE_DATA_TYPE short => 不同类型或用户生成 Ref 类型、来自 java.sql.Types 的 SQL 类型的源类型(如果 DATA_TYPE 不是 DISTINCT 或用户生成的 REF,则为 null)

IS_AUTOINCREMENT String => 指示此列是否自动增加

YES --- 如果该列自动增加

NO --- 如果该列不自动增加

空字符串 --- 如果不能确定该列是否是自动增加参数

可根据需要使用

示例:

DatabaseMetaData metaData = conn.getMetaData();

// ResultSet rs = metaData.getColumns (conn.getCatalog(), "SCOTT", "EMP", "SAL");

ResultSet rs = metaData.getColumns(conn.getCatalog(), "root", "book", "book_id");

  while(rs.next()) {     System.out.println(rs.getString("COLUMN_NAME"));

   }

在使用的时候,我的建议是参数全部使用大写,这样可以屏蔽各个数据库的差异

分享到:
评论

相关推荐

    DatabaseMetaData生成数据库DLL

    使用`DatabaseMetaData`生成数据库DDL的过程,主要是遍历数据库的所有表,获取每个表的列信息、主键、外键等,然后构造对应的SQL语句。例如,可以获取`getTables()`方法来获取所有表的信息,`getColumns()`方法获取...

    java 查询oracle数据库所有表DatabaseMetaData的用法(详解)

    这篇文章将详细介绍如何利用`DatabaseMetaData`查询Oracle数据库的所有表。 首先,我们需要建立一个数据库连接。通过`DriverManager.getConnection(url, userName, password)`方法,我们可以获得`Connection`对象,...

    java获取数据库主外键

    使用`DatabaseMetaData`对象的方法`getTables()`来获取所有表的信息。 ```java ResultSet tableRs = dbmd.getTables(null, null, "%", new String[]{"TABLE"}); ArrayList<String> tables = new ArrayList(); ...

    java之jdbc项目文件

    Connection对象的getMetaData()方法返回DatabaseMetaData对象,可以获取关于数据库的信息,如表名、列名等。 9. **异常处理**: 在JDBC操作中,需要捕获SQLException,并根据具体错误码进行处理。 10. **连接池*...

    JDBC基础教程之ResultSet对象.doc )

    可以通过`DatabaseMetaData`类的`supportsPositionedDelete()`和`supportsPositionedUpdate()`方法来检查特定的数据库连接是否支持这些功能。如果支持,DBMS/驱动程序会确保被选择的行被适当锁定,避免定位更新引起...

    传智播客jdbc

    - **列信息**:对于特定表,可以获取列名、数据类型、是否允许为NULL等,使用`getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern)`。 - **主键信息**:通过`...

    非常全面JDBC资源

    4. **数据库元数据**: `DatabaseMetaData`对象提供了关于数据库的结构和能力的信息,如获取表信息、列信息等。 **三、JDBC最佳实践** 1. **连接池**: 使用连接池(如C3P0、HikariCP、Apache DBCP)管理数据库连接,...

    自定义jdbc通用类

    4. **获取元数据信息**:通过`Connection`对象的`getMetaData()`方法获取`DatabaseMetaData`实例,进一步获取数据库表、列等信息。 5. **构建通用方法**: - `executeQuery(String sql, Object... params)`:用于...

    jdbc_data.rar

    7. **数据库元数据**:通过`DatabaseMetaData`获取数据库的元信息,如表名、列名、索引等。 8. **SQL语句**:学习SQL的基本语法,如创建表(`CREATE TABLE`)、插入数据(`INSERT INTO`)、更新数据(`UPDATE`)、...

    JdbcUtil.rar_oracle_元数据

    在Oracle中,可以使用JDBC的`DatabaseMetaData`接口来获取这些信息。下面将详细介绍如何通过Java和JDBC操作Oracle元数据。 1. **连接Oracle数据库**: 首先,你需要加载Oracle的JDBC驱动,通常是`ojdbc.jar`,并...

    用JDBC连接数据库

    此外,JDBC还提供了`DatabaseMetaData`接口,可以获取关于数据库的各种元数据,如数据库版本、支持的SQL特性、表信息等。 在设计数据库时,遵循规范化原则是非常重要的。规范化主要包括第一范式(1NF)、第二范式...

    jdbc 2.0驱动程序jar包

    6. **数据库元数据**:DatabaseMetaData接口提供了获取数据库元信息的方法,如表名、列名、索引等,有助于编写动态SQL和数据库无关的代码。 7. **并发访问和事务控制**:JDBC 2.0支持并发控制和多线程访问,提供了...

    JDBC.rar_JDBC API_JDBC 接口

    8. **DatabaseMetaData**: 提供有关数据库的元数据,如数据库的版本、表名、列名等。 ### JDBC连接数据库步骤 1. 加载驱动:通过Class.forName()方法加载JDBC驱动。 2. 获取连接:使用DriverManager.get...

    mysqljdbc src

    9. **元数据获取**:`com.mysql.jdbc.DatabaseMetaData`类提供了获取数据库元数据的方法,如数据库版本、表信息、索引信息等。 10. **类型映射**:`com.mysql.jdbc.Types`枚举类定义了Java类型到MySQL类型的映射,...

    jdbc sql2000驱动

    9. **数据库元数据MetaData**:通过`Connection`获取`DatabaseMetaData`,可以获取数据库的结构信息,如表名、列名等。 10. **SQL Server 2000特性**:了解SQL Server 2000特有的SQL语法、存储过程、触发器、视图等...

    Java获取数据库属性信息.rar

    在Java编程中,数据库操作是不可或缺的一部分,而`DatabaseMetaData`接口则是Java SQL API提供的一种机制,用于获取关于数据库的元数据信息。元数据是指关于数据的数据,例如表的结构、列的信息、索引、视图、存储...

    JDBC所有笔记(可下载)

    11. **数据库元数据(DatabaseMetaData)** Connection对象的getMetaData()方法可以获取数据库的元数据,如表名、列名、索引等信息。 通过以上知识,你可以熟练地使用JDBC进行MySQL数据库的开发工作,包括插入、...

    JDBC(javaweb)

    6. **数据库元数据**:Connection对象还提供了DatabaseMetaData接口,可以获取关于数据库的元数据信息,如数据库版本、表名、列名等。 7. **批处理**:PreparedStatement对象支持批处理,可以一次提交多个SQL语句,...

    JDBC.rar_jdbc pdf

    7. **数据库元数据**:通过`DatabaseMetaData`接口获取数据库的相关信息,如表名、列名、索引等。 8. **连接池**:在实际应用中,为了优化性能和资源管理,通常会使用连接池(如C3P0、HikariCP、Apache DBCP等)。...

    jdbc问题集收藏总结

    - 可以通过`DatabaseMetaData`类的方法`supportsPositionedDelete()`和`supportsPositionedUpdate()`来检查数据库是否支持这些功能。 2. **使用场景:** - 通常在需要根据游标位置进行删除或更新操作时使用。 - ...

Global site tag (gtag.js) - Google Analytics