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实体类
DatabaseMetaData和ResultSetMetaData就是两个常用的获取数据库元数据相关信息的接口,本文只讲解DatabaseMetaData接口获取元数据的方法。 文章地址:http://blog.csdn.net/chen_zw/article/details/18816599
在执行查询后,我们需要获取元数据信息,包括列数、列名等信息。这可以通过 ResultSetMetaData 对象来实现。我们可以使用 getColumnCount() 方法来获取列数,然后使用 getColumnLabel() 方法来获取每个列的名称。 ...
JDBC 元数据是 JDBC 的一个重要组件,用于提供数据库的元数据信息。元数据包括数据库的 schema 信息、表信息、字段信息等。 元数据 Meta Data 元数据 Meta Data 是元数据的核心组件之一,提供了数据库的 schema ...
项目分为核心查询模块“database-metadata-core”和数据展示模块“database-metadata-view”,其中核心模块采用纯JDBC方式,通过java.sql.DatabaseMetaData对象获取数据库元数据信息,不依赖任何外部jar包,适用于...
本示例将详细介绍如何使用JDBC连接到PostgreSQL数据库并执行简单的数据获取操作。PostgreSQL是一种开源的对象关系型数据库管理系统,因其强大的功能和稳定性而广受欢迎。 首先,确保已安装PostgreSQL数据库并在系统...
至于文件"Sqlmeta",这可能是生成器使用的一个元数据文件,可能包含了关于SQL查询的信息,如表名、列名、数据类型等,以便正确构建HTML表格的结构。 总的来说,jdbc数据集生成器是一个提升开发效率的实用工具,它...
JDBC元数据是指由JDBC驱动程序提供的关于数据库的信息,包括但不限于表、列、键和索引等数据库对象的属性。通过JDBC元数据,开发者可以获取数据库的结构信息,如表名、列名、数据类型等,这对于构建动态数据库应用...
JDBC 元数据是 Java 语言中获取数据库管理系统信息的方式,通过获取元数据,可以了解数据库中的各种信息,例如数据库中的表、列、数据类型、触发器、存储过程等。获取这些信息的方法都是在 DatabaseMetaData 类的...
- `DatabaseMetaData` 类提供了关于数据库的各种元数据信息,例如获取所有表名、列信息、索引信息等。通过调用 `Connection` 对象的 `getMetaData()` 方法获取元数据实例,然后通过这个实例可以查询到数据库的详细...
在Java编程中,元数据(Metadata)是指关于数据的数据,它提供有关文件、数据库记录、类、方法等的附加信息,但不直接构成这些实体的实际内容。元数据可以帮助理解和处理这些对象,例如,图片的元数据可能包含拍摄...
3. **持久化层**:元数据定义数据如何存储和检索,通过JDBC等接口,实现面向元数据的数据库操作。 在元数据功能层次描述中,元数据从展示层到管理层再到模型层,层层深入,形成一个完整的体系,覆盖了数据的表示、...
规范文档还包含了更多技术性的描述,关于JDBC驱动、连接数据库、执行SQL语句、事务管理、元数据处理和资源管理等核心概念和技术的详细说明。 在学习JDBC的过程中,了解其规范是至关重要的。它不仅提供了接口的定义...
提供了获取元数据的方法,如数据库支持的SQL语法、存储过程等。 - `Driver`:每个数据库驱动程序都必须实现的一个接口。 - `DriverManager`:管理JDBC驱动程序的服务,负责加载驱动程序。 - `Statement`:用于执行...
- **Class java.sql.DatabaseMetaData**:提供了有关数据库元数据的信息。 - **Class java.sql.Driver**:定义了如何加载和注册 JDBC 驱动程序的接口。 - **Class java.sql.DriverManager**:提供了加载驱动程序和...
7. **元数据查询**:获取数据库、表、列等的元数据信息。 8. **JNDI查找**:在应用服务器环境中,可以通过JNDI查找来获取数据库连接。 9. **连接池管理**:配合连接池技术(如C3P0、HikariCP等),提高数据库连接的...
至于压缩包内的文件结构,"META-INF"目录通常包含关于jar包的元数据,如MANIFEST.MF文件,它列出了jar包的主要属性,包括哪些类或模块被包含以及它们的版本信息。"com"目录则很可能包含了具体的Java源代码或编译后的...
1. **META-INF**:这个目录通常包含关于库的信息,如MANIFEST.MF文件,它列出了库的元数据,包括类路径、版本信息等。这有助于Java虚拟机识别和加载库。 2. **docs**:可能包含驱动的文档,如API参考、用户指南或...
`DmDictionary.jar`可能包含了达梦数据库的元数据信息,这对于理解和操作数据库表结构非常有帮助。`Hibernate Dialect&JDBC.txt`文件可能包含了关于如何在Hibernate ORM框架中配置达梦的方言和JDBC设置的信息,这...
可以通过DatabaseMetaData对象获取关于数据库、表、列、索引等元数据信息,帮助开发者更好地理解数据库结构。 9. **异常处理**: 当出现数据库操作错误时,JDBC驱动会抛出SQLException及其子类异常,开发者需要...