java jdbc list_将JDBC ResultSet结果集转成List

package com.dmm.meta.service.utils;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import javax.sql.DataSource;

import com.alibaba.fastjson.JSON;

import oracle.jdbc.pool.OracleDataSource;

public class QueryDataUtil {

private static int page;

private static int rows;

private static int totalRow;

public static DataSource getDataSource() throws Exception {

OracleDataSource ds = new OracleDataSource();

ds.setURL("jdbc:oracle:thin:@localhost:1521:orcl");

ds.setUser("test");

ds.setPassword("test");

return ds;

}

public static void main(String[] args) {

try {

page = 1;

rows = 1;

totalRow = 100;

page();

queryAll();

} catch (Exception e) {

e.printStackTrace();

}

}

public static void queryAll() throws Exception {

Statement sta = null;

ResultSet rs = null;

DataSource dSource = getDataSource();

/* Class.forName("com.mysql.jdbc.Driver");

conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/easyui", "root", "root");*/

try {

sta = dSource.getConnection().createStatement();

rs = sta.executeQuery("SELECT * FROM ( "

+ "SELECT A.*, ROWNUM RN FROM (SELECT * FROM table_name) A "

+ "WHERE ROWNUM <= "+rows+" ) WHERE RN >= "+page+"");

ResultSetMetaData md = rs.getMetaData(); // 获得结果集结构信息,元数据

int columnCount = md.getColumnCount(); // 获得列数

List lists = new ArrayList();

while (rs.next()) {

Map rowData = new HashMap();

for (int i = 1; i <= columnCount; i++) {

rowData.put(md.getColumnName(i), rs.getObject(i));

}

lists.add(rowData);

}

String jsonLists = JSON.toJSONString(lists);

String returnText ="{\"pageRow\":{\"rows\":"+jsonLists+",\"total\":2},\"meta\":{\"msg\":'',\"status\":1,\"success\":\"true\"}}";

/*for(int i = 0;i

Map rowData = (Map) lists.get(i);

System.out.println("====================");

for (String key : rowData.keySet()) {

System.out.println("key= " + key + " and value= " + rowData.get(key));

}

System.out.println("++++++++++++++++++");

}*/

} catch (SQLException e) {

e.printStackTrace();

}

}

/**

*

* @param page 第几页

* @param rows 显示数

* @param totalRow 总数

* @return

*/

private static void page(){

int totalPage = (int) (totalRow / rows);//总分页数

if (totalRow % rows != 0) {

totalPage++;

}

if(page > 1){

page = (page*rows)+1;

rows = rows*page;

}

if (page > totalPage){

page = totalPage;

rows = rows*page;

}

}

}

ResultSet简介:

ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法(这些get方法可以访问当前行中的不同列) 提供了对这些行中数据的访问。

ResultSet.next方法用于移动到ResultSet中的下一行,使下一行成为当前行。 上面的rs.getObject(i) 即是获得这一行的数据值

ResultSetMetaData简介:

利用ResultSet的getMetaData的方法可以获得ResultSetMeta对象,而ResultSetMetaData存储了ResultSet的MetaData。

所谓的MetaData在英文中的解释为"Data about Data",直译成中文则为"有关数据的数据"或者"描述数据的数据", 实际上就是描述及解释含义的数据。

以Result的MetaData为例,ResultSet是以表格的形式存在,所以getMetaData 就包括了数据的 字段名称、类型以及数目等表格所必须具备的信息。

在ResultSetMetaData类中主要有一下几个方法。

ResultSetMetaData rsmd=rs.getMetaData();

1、getColumCount()方法 返回所有字段的数目

2、getColumName()方法 根据字段的索引值取得字段的名称。

3、getColumType()方法 根据字段的索引值取得字段的类型

executeQuery:  针对的是查询语句(select)

execute  :针对的是创建语句(create,drop)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值