`
royzhou1985
  • 浏览: 255451 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JDBC 元数据信息

    博客分类:
  • Java
阅读更多
java.sql.Connection conn = JdbcUtils.getConnection();
		DatabaseMetaData dbmd = conn.getMetaData();
		System.out.println("db name: " + dbmd.getDatabaseProductName());
		System.out.println("tx: " + dbmd.supportsTransactions());
		conn.close();

通过conn.getMetaData()方法可以获取数据库的信息,如产品名称,是否支持事务等等

public class ParameterMetaTest {

	/**
	 * @param args
	 * @throws SQLException
	 */
	public static void main(String[] args) throws SQLException {
		Object[] params = new Object[] { "lisi", 100f };
		read("select * from user where name=? and  money > ?", params);
	}

	static void read(String sql, Object[] params) throws SQLException {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			conn = JdbcUtils.getConnection();
			ps = conn.prepareStatement(sql);
 			ParameterMetaData pmd = ps.getParameterMetaData();
 			int count = pmd.getParameterCount();
			for (int i = 1; i <= count; i++) {
				// System.out.print(pmd.getParameterClassName(i) + "\t");
				// System.out.print(pmd.getParameterType(i) + "\t");
				// System.out.println(pmd.getParameterTypeName(i));
				ps.setObject(i, params[i - 1]);
			}

			rs = ps.executeQuery();

			while (rs.next()) {
				System.out.println(rs.getInt("id") + "\t"
						+ rs.getString("name") + "\t" + rs.getDate("birthday")
						+ "\t" + rs.getFloat("money"));
			}

		} finally {
			JdbcUtils.free(rs, ps, conn);
		}
	}

}

参数的元数据信息,可以利用
ParameterMetaData pmd = ps.getParameterMetaData();
 			int count = pmd.getParameterCount();


获取sql的参数个数,以及各个参数的详细信息,然后使用一个Object[]数组传递参数,使得查询更加灵活,只需要传入sql语句和参数数组

public class ResultSetMetaDataTest {

	/**
	 * @param args
	 * @throws SQLException
	 */
	public static void main(String[] args) throws SQLException {
		List<Map<String, Object>> datas = read("select id, name as n from user where id < 5");
		System.out.println(datas);
	}

	static List<Map<String, Object>> read(String sql) throws SQLException {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			conn = JdbcUtils.getConnection();
			ps = conn.prepareStatement(sql);
			rs = ps.executeQuery();
			ResultSetMetaData rsmd = rs.getMetaData();
			int count = rsmd.getColumnCount();
			String[] colNames = new String[count];
			for (int i = 1; i <= count; i++) {
				// System.out.print(rsmd.getColumnClassName(i) + "\t");
				// System.out.print(rsmd.getColumnName(i) + "\t");
				// System.out.println(rsmd.getColumnLabel(i));
				colNames[i - 1] = rsmd.getColumnLabel(i);//rsmd.getColumnLabel的index从1开始
			}
			List<Map<String, Object>> datas = new ArrayList<Map<String, Object>>();

			while (rs.next()) {
				Map<String, Object> data = new HashMap<String, Object>();
				for (int i = 0; i < colNames.length; i++) {
					data.put(colNames[i], rs.getObject(colNames[i]));
				}
				datas.add(data);
			}
			return datas;
		} finally {
			JdbcUtils.free(rs, ps, conn);
		}
	}

}

利用结果集元数据将查询结果封装为map,再使用一个List将Map封装,即可实现结果集的查询
分享到:
评论

相关推荐

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

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

    JDBC元数据操作--DatabaseMetaData接口Demo

    DatabaseMetaData和ResultSetMetaData就是两个常用的获取数据库元数据相关信息的接口,本文只讲解DatabaseMetaData接口获取元数据的方法。 文章地址:http://blog.csdn.net/chen_zw/article/details/18816599

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

    在执行查询后,我们需要获取元数据信息,包括列数、列名等信息。这可以通过 ResultSetMetaData 对象来实现。我们可以使用 getColumnCount() 方法来获取列数,然后使用 getColumnLabel() 方法来获取每个列的名称。 ...

    jdbc实例教程

    JDBC 元数据是 JDBC 的一个重要组件,用于提供数据库的元数据信息。元数据包括数据库的 schema 信息、表信息、字段信息等。 元数据 Meta Data 元数据 Meta Data 是元数据的核心组件之一,提供了数据库的 schema ...

    基于Java JDBC的数据库元数据查询设计源码

    项目分为核心查询模块“database-metadata-core”和数据展示模块“database-metadata-view”,其中核心模块采用纯JDBC方式,通过java.sql.DatabaseMetaData对象获取数据库元数据信息,不依赖任何外部jar包,适用于...

    JDBC 连接到 PostgreSQL 数据库获取数据简单例子

    本示例将详细介绍如何使用JDBC连接到PostgreSQL数据库并执行简单的数据获取操作。PostgreSQL是一种开源的对象关系型数据库管理系统,因其强大的功能和稳定性而广受欢迎。 首先,确保已安装PostgreSQL数据库并在系统...

    jdbc数据集生成器

    至于文件"Sqlmeta",这可能是生成器使用的一个元数据文件,可能包含了关于SQL查询的信息,如表名、列名、数据类型等,以便正确构建HTML表格的结构。 总的来说,jdbc数据集生成器是一个提升开发效率的实用工具,它...

    JDBC Metadata MySQL and Oracle Recipes

    JDBC元数据是指由JDBC驱动程序提供的关于数据库的信息,包括但不限于表、列、键和索引等数据库对象的属性。通过JDBC元数据,开发者可以获取数据库的结构信息,如表名、列名、数据类型等,这对于构建动态数据库应用...

    浅谈 JDBC 元数据

    JDBC 元数据是 Java 语言中获取数据库管理系统信息的方式,通过获取元数据,可以了解数据库中的各种信息,例如数据库中的表、列、数据类型、触发器、存储过程等。获取这些信息的方法都是在 DatabaseMetaData 类的...

    JDBCJDBC高级应用

    - `DatabaseMetaData` 类提供了关于数据库的各种元数据信息,例如获取所有表名、列信息、索引信息等。通过调用 `Connection` 对象的 `getMetaData()` 方法获取元数据实例,然后通过这个实例可以查询到数据库的详细...

    java读取metadata元信息

    在Java编程中,元数据(Metadata)是指关于数据的数据,它提供有关文件、数据库记录、类、方法等的附加信息,但不直接构成这些实体的实际内容。元数据可以帮助理解和处理这些对象,例如,图片的元数据可能包含拍摄...

    元数据的概念及元数据对于Web开发的好处

    3. **持久化层**:元数据定义数据如何存储和检索,通过JDBC等接口,实现面向元数据的数据库操作。 在元数据功能层次描述中,元数据从展示层到管理层再到模型层,层层深入,形成一个完整的体系,覆盖了数据的表示、...

    JDBC 4.3规范文档

    规范文档还包含了更多技术性的描述,关于JDBC驱动、连接数据库、执行SQL语句、事务管理、元数据处理和资源管理等核心概念和技术的详细说明。 在学习JDBC的过程中,了解其规范是至关重要的。它不仅提供了接口的定义...

    jdbc学习手册 jdbc

    提供了获取元数据的方法,如数据库支持的SQL语法、存储过程等。 - `Driver`:每个数据库驱动程序都必须实现的一个接口。 - `DriverManager`:管理JDBC驱动程序的服务,负责加载驱动程序。 - `Statement`:用于执行...

    JDBC 开发指南 JDBC 开发指南 JDBC 开发指南

    - **Class java.sql.DatabaseMetaData**:提供了有关数据库元数据的信息。 - **Class java.sql.Driver**:定义了如何加载和注册 JDBC 驱动程序的接口。 - **Class java.sql.DriverManager**:提供了加载驱动程序和...

    sqljdbc.jar

    7. **元数据查询**:获取数据库、表、列等的元数据信息。 8. **JNDI查找**:在应用服务器环境中,可以通过JNDI查找来获取数据库连接。 9. **连接池管理**:配合连接池技术(如C3P0、HikariCP等),提高数据库连接的...

    Access_JDBC30

    至于压缩包内的文件结构,"META-INF"目录通常包含关于jar包的元数据,如MANIFEST.MF文件,它列出了jar包的主要属性,包括哪些类或模块被包含以及它们的版本信息。"com"目录则很可能包含了具体的Java源代码或编译后的...

    access的jdbc驱动

    1. **META-INF**:这个目录通常包含关于库的信息,如MANIFEST.MF文件,它列出了库的元数据,包括类路径、版本信息等。这有助于Java虚拟机识别和加载库。 2. **docs**:可能包含驱动的文档,如API参考、用户指南或...

    jdbc_Java8_达梦8jdbc_

    `DmDictionary.jar`可能包含了达梦数据库的元数据信息,这对于理解和操作数据库表结构非常有帮助。`Hibernate Dialect&JDBC.txt`文件可能包含了关于如何在Hibernate ORM框架中配置达梦的方言和JDBC设置的信息,这...

    Dm7JdbcDriver16.jar Dm7JdbcDriver17.jar Dm7JdbcDriver18.jar

    可以通过DatabaseMetaData对象获取关于数据库、表、列、索引等元数据信息,帮助开发者更好地理解数据库结构。 9. **异常处理**: 当出现数据库操作错误时,JDBC驱动会抛出SQLException及其子类异常,开发者需要...

Global site tag (gtag.js) - Google Analytics