- 浏览: 833056 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (363)
- 2010年3月 (3)
- 2010年4月 (3)
- Java (116)
- ExtJs (22)
- EJB3.0 (11)
- JQuery (28)
- SqlServer (5)
- Oracle (17)
- hibernate (21)
- struts2 (14)
- php (10)
- JavaScript (11)
- jbpm (6)
- spring (24)
- lucene (2)
- ibatis (7)
- C# (8)
- mysql (11)
- json (3)
- webservice (3)
- 设计模式 (1)
- jdbc (1)
- servlet (2)
- ice (6)
- 日常软件问题 (2)
- 生活 (2)
- iphone (1)
- rest (3)
- ruby (2)
- linux (13)
- quartz (1)
- poi (1)
- redis (13)
- memcached (4)
- nosql (2)
- tomcat调优 (1)
- 项目管理 (0)
最新评论
-
天使建站:
jquery里和数组相关的操作 附带具体的实例 ...
jquery对象数组 -
Cy0941:
$('#formId').form('submit',...) ...
easyui的form表单提交处理 -
shmily2038:
swifth 写道楼主,,你的命令写错啦,,[root@ser ...
centos直接yum安装nginx -
swifth:
楼主,,你的命令写错啦,,[root@server ~]# y ...
centos直接yum安装nginx -
随遇而安DXX:
...
REST
ResultSetMetaData能够通过ResultSet分析出结果集的元素。
ResultSetMetaData meta = rs.getMetaData();
通过ResultSetMetaData可以获得结果有几列、各列名、各列别名、各列类型等。
可以将ResultSet放入Map(key:列名 value:列值)。
用反射ResultSetMetaData将查询结果读入对象中(简单的O/RMapping)
1)让SQL语句中列别名和要读入的对象属性名一样;
2)通过ResultSetMetaData获得结果列数和列别名;
3)通过反射将对象的所有setXxx方法找到;
4)将3)找到的方法setXxx和2)找到的列别名进行匹配(即方法中的xxx于列别名相等);
5)由上一步找到的方法和列别名对应关系进行赋值
Method.invoke(obj, rs.getObject(columnAliasName));
public class ResultSetMetaDataTest {
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);//将列的名称放到一个数组当中去。
}
List<Map<String, Object>> datas = new ArrayList<Map<String, Object>>();
while (rs.next()) {
//每一行
Map<String, Object> data = new HashMap<String, Object>();
//data中的Key为列的名称,Value是些列的值
for (int i = 0; i < colNames.length; i++) {
data.put(colNames[i], rs.getObject(colNames[i]));
//将列的名称与列的值放到map当中去,每一行map中的元素大小就是列的数目
}
datas.add(data);//将此行放到List当中去。 }
return datas;
} finally {
JdbcUtils.free(rs, ps, conn);
}
}
}
ResultSetMetaData meta = rs.getMetaData();
通过ResultSetMetaData可以获得结果有几列、各列名、各列别名、各列类型等。
可以将ResultSet放入Map(key:列名 value:列值)。
用反射ResultSetMetaData将查询结果读入对象中(简单的O/RMapping)
1)让SQL语句中列别名和要读入的对象属性名一样;
2)通过ResultSetMetaData获得结果列数和列别名;
3)通过反射将对象的所有setXxx方法找到;
4)将3)找到的方法setXxx和2)找到的列别名进行匹配(即方法中的xxx于列别名相等);
5)由上一步找到的方法和列别名对应关系进行赋值
Method.invoke(obj, rs.getObject(columnAliasName));
public class ResultSetMetaDataTest {
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);//将列的名称放到一个数组当中去。
}
List<Map<String, Object>> datas = new ArrayList<Map<String, Object>>();
while (rs.next()) {
//每一行
Map<String, Object> data = new HashMap<String, Object>();
//data中的Key为列的名称,Value是些列的值
for (int i = 0; i < colNames.length; i++) {
data.put(colNames[i], rs.getObject(colNames[i]));
//将列的名称与列的值放到map当中去,每一行map中的元素大小就是列的数目
}
datas.add(data);//将此行放到List当中去。 }
return datas;
} finally {
JdbcUtils.free(rs, ps, conn);
}
}
}
发表评论
-
Jackson2.x通用工具类
2014-11-03 11:38 4904import java.io.IOException; i ... -
面试题
2013-02-27 09:04 1707从1加到100(考虑减少循环次数)使用数学公式 首先要知道 ... -
单例延迟实例化
2013-01-23 08:55 13271.如果出于性能的考虑而需要对实例域使用延迟初始化,就使用双 ... -
java中重载与重写的区别
2013-01-21 10:03 925首先我们来讲讲:重载(Overloading) ( ... -
自定义标签
2012-12-15 12:58 997package com.fsti.tag; import ... -
JAXB格式化beanToXml
2012-12-14 15:03 1274context = JAXBContext.n ... -
面向对象的特征有哪些方面?
2012-12-13 09:36 1007计算机软件系统是现实 ... -
java nio缓冲器
2012-12-05 17:03 3604缓冲器仅仅是一个" 多功能 " 的数组。可 ... -
面向对象三大特性一句话概括
2012-12-04 15:58 1553封装可以隐藏实现细节,使得代码模块化; 继承可以扩 ... -
Java序列化高级认识
2012-12-04 09:13 1065将 Java 对象序列化为二进制文件的 Java 序列化技术是 ... -
面向接口编程——提升系统多态性和可扩展性
2012-12-03 14:10 1284接口的本质 接口,在表面上是由几个没有主体代码的方 ... -
面向对象之多态
2012-11-23 19:22 874多态性(polymorphisn)是允许你将父对象设置成为和一 ... -
我对"秒杀"在技术性上的一些看法
2012-11-22 11:31 1011秒杀,是指电子商务 ... -
项目编码
2012-11-16 13:59 1157看两个项目所用的编码是否一样 Java的乱码问题: ... -
SVN错误:Attempted to lock an already-locked dir
2012-11-07 09:08 1027出现这个问题后使用“ ... -
面向对象的三个基本特征
2012-11-04 08:31 1088面向对象的三个基本特征是:封装、继承、多态。 封装 封装最 ... -
预编译防sql注入
2012-11-03 20:23 1972prepareStatement会先初始化SQL,先把这个SQ ... -
Java类与对象的初始化
2012-10-19 09:33 896Java类与对象的初始化 面试的时候,经常会遇到这样的笔试题 ... -
commons bean
2012-10-19 09:15 889这是两个javabean对象 package com.bea ... -
java工具DateUtil
2012-10-12 14:42 1054//一年内的周一 public final class Da ...
相关推荐
Java-JDBC【之】数据类型、封装JDBCUtil、封装通用增删改、ResultSet与ResultSetMetaData、查询结果集映射Map与ListMap 1.数据类型 2.封装通用增删改 2.1.封装JDBCUtil 2.2.封装Dao通用增删改 2.3.测试 3.ResultSet...
6.6 JDBC ResultSetMetaData 6.7 小结 第7章 使用SQL查询检索数据 7.1 SELECT语句 7.1.1 使用WHERE子句 7.1.2 格式化SQL命令 7.2 在较复杂的WHRER子句中使用运算符 7.2.1 DISTINCT运算符 7.2.2 TOP运算符...
6.6 JDBC ResultSetMetaData 6.7 小结 第7章 使用SQL查询检索数据 7.1 SELECT语句 7.1.1 使用WHERE子句 7.1.2 格式化SQL命令 7.2 在较复杂的WHRER子句中使用运算符 7.2.1 DISTINCT运算符 7.2.2 TOP运算符...
6.6 JDBC ResultSetMetaData 6.7 小结 第7章 使用SQL查询检索数据 7.1 SELECT语句 7.1.1 使用WHERE子句 7.1.2 格式化SQL命令 7.2 在较复杂的WHRER子句中使用运算符 7.2.1 DISTINCT运算符 7.2.2 TOP运算符...
6.6 JDBC ResultSetMetaData 6.7 小结 第7章 使用SQL查询检索数据 7.1 SELECT语句 7.1.1 使用WHERE子句 7.1.2 格式化SQL命令 7.2 在较复杂的WHRER子句中使用运算符 7.2.1 DISTINCT运算符 7.2.2 TOP运算符...
- `ResultSetMetaData`:用于获取`ResultSet`对象中列的类型和属性信息。 #### 三、驱动程序工作分类 根据工作方式的不同,JDBC驱动程序可以分为四类: 1. **JDBC-ODBC Bridge + ODBC驱动**:这种驱动程序将JDBC...
每个结果行可以通过`ResultSetMetaData`获取列名和类型信息,通过`ResultSet.next()`移动指针,`ResultSet.getObject()`或`ResultSet.getString()`等方法获取列值。 5. **事务处理**:Hive默认不支持事务,但某些...
通过ResultSetMetaData接口,读者可以了解如何获取和理解数据库列的信息。此外,本章还介绍了如何将数据库表映射到Java对象,这是ORM的核心概念。 第七章"Working With Query Results"介绍了处理查询结果的方法,...
ResultSet 接口是用来接收 select 语句返回的查寻结果的,DatabaseMetaData 是数据库元数据,ResultSetMetaData 是结果集元数据,Types 是特殊的类,只包含静态的常量,代表 jdbc 类型。 jdbc 的应用步骤包括注册...
- **ResultSetMetaData接口**:提供关于结果集的元数据信息。 #### 四、JDBC应用步骤详解 1. **注册加载驱动**:使用`Class.forName()`方法加载指定的驱动程序。 2. **创建数据库连接**:通过`DriverManager.get...
- **ResultSetMetaData**:用于获取关于ResultSet对象中列的类型和属性信息的对象。 #### 五、JDBC驱动程序分类 根据工作方式的不同,JDBC驱动程序可以分为四类: 1. **JDBC-ODBC Bridge + ODBC驱动**:这种驱动...
- **结果集元数据**:`ResultSetMetaData`对象提供列的相关信息。 - **JDBC逃逸**:防止SQL注入的编码技术。 ### 10. 示例代码 ```java Class.forName("com.mysql.jdbc.Driver"); Connection conn = ...
`ResultSet`对象用于存储查询结果,`ResultSetMetaData`提供了关于结果集列的信息。 - 数据库元数据:`DatabaseMetaData`对象提供了数据库的各种元数据,如表信息、列信息、数据库产品版本等。常见的方法有`...
- **`java.sql.ResultSetMetaData`**:用于获取关于 `ResultSet` 对象中列的类型和属性信息的对象。 #### 三、JDBC 驱动程序分类 根据工作方式的不同,JDBC 驱动程序可以分为以下四类: 1. **JDBC-ODBC Bridge + ...
- `ResultSetMetaData`:提供有关`ResultSet`对象中列的信息。 - **`javax.sql` 包**:提供更高级别的数据库操作功能,如连接池管理、分布式事务支持等。其中的关键接口包括但不限于: - `DataSource`:用于连接...
### 通过JDBC使用Java连接DB2数据库的关键知识点 #### JDBC简介 JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,它可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成...
在IT行业中,JDBC(Java Database Connectivity)是Java编程语言中用于规范应用程序如何访问和处理数据库的标准接口。JDBC驱动程序是实现这些接口的具体类,它们充当桥梁,连接Java应用程序和数据库管理系统。"JDBC...
- **`ResultSetMetaData`** 和 **`DatabaseMetaData`** - 分别提供关于结果集和数据库的整体元数据信息。 2. **`javax.sql`** - 提供更高级的数据库操作功能。 - **`DataSource`** - 用于管理数据库连接池。 - *...
### JDBC核心知识点详解 #### 一、概述 JDBC(Java Database Connectivity)是Java语言访问数据库的标准接口集合,实质上是调用者(通常是开发者或应用程序)与数据库供应商之间的一种协议。这种协议允许开发者...