完整的jdbc查询结果集编码

 1 public static ArrayList<HashMap<String,Object>> query(Connection conn,String sql, Object[] paras) throws Exception {
 2         PreparedStatement statement = null;
 3         ResultSet ss = null;
 4         String str = "";//打日志使用
 5         ArrayList<HashMap<String,Object>> resultList = new ArrayList<HashMap<String,Object>>();
 6         statement = conn.prepareStatement(sql);
 7         if(paras!=null&&paras.length!=0){
 8             for (int i = 0; i < paras.length; i++) {
 9                 if (paras[i].getClass().getSimpleName().equals("Integer")) {
10                     statement.setInt(i + 1, (Integer)paras[i]);
11                     str+=paras[i];
12                 } else {
13                     statement.setString(i + 1, (String) paras[i]);
14                     str+=paras[i];
15                 }
16             }
17         }
18         ss = statement.executeQuery();
19         ResultSetMetaData rsmd = ss.getMetaData();//获得结果集的列信息
20         int columnNum = rsmd.getColumnCount();
21         while(ss.next()){
22             HashMap<String,Object> tmpMap = new HashMap<String, Object>();
23             for (int i = 1; i <=columnNum; i++) {//循环列组装list
24                 tmpMap.put(rsmd.getCatalogName(i), ss.getObject(i));
25             }
26             resultList.add(tmpMap);
27         }
28 //        logger.info("sql:"+sql+" paras:"+str+" resultList:"+resultList.size());
29         return resultList;
30     }

以上代码功能不够完成,酌情参考;

参数解析:

Connection conn,数据库链接java.sql.Connection;

String sql, 需要执行的查找SQL java.lang.String;

Object[] paras,根据查找需要传入的参数,Object类型,可以支持Integer和String类型的参数

ArrayList<HashMap<String,Object>> 返回查询结果集,list

语句解释:

ResultSetMetaData rsmd = ss.getMetaData();可以得到SQL查询的结果的列信息

int columnNum = rsmd.getColumnCount();得到结果集中列的数量

rsmd.getCatalogName(i) 根据一条数据中顺序获得当前列的名称

ss.getObject(i) 从结果集中获得当前列对应的数据

时间: 2024-11-06 23:24:46

完整的jdbc查询结果集编码的相关文章

关于YMP框架JDBC查询结果集自定义处理方法

final String _sql = "SELECT u.name as name, u.age, u.type, u.birth FROM ym_user u WHERE u.age > ?, u.type = ?"; // 1. 将SQL查询的结果集采用数组的形式封装 List<Object[]> _results = JDBC.openSession(new ISessionExecutor<List<Object[]>>() { pu

Java 通过JDBC查询数据库表结构(字段名称,类型,长度等)

Java 通过JDBC查询数据库表结构(字段名称,类型,长度等) 发布者:唛唛家的豆子 时间:2012-11-20 17:54:02 在JDBCPreparedStatement.executeQuery().getMetaData();后,我们可以通过ResultSetMetaData对象查询返回结果集的源数据信息,也就是表结构信息. 示例代码如下: package astar.sutil.db; import java.sql.Connection; import java.sql.Driv

DBeaver改进查询结果集UI和ERD视图

DBeaver 3.7.3 版本发布了.该版本主要是查询结果集UI和ERD视图的改进,还有大量问题修复. DBeaver 的详细介绍请登录勤快学基础教程qkxue.net 具体的变更列表: Result set UI was redesigned (panels)Results aggregation panel addedNavigator filters management was improvedERD attributes view is now configurable (data

Eclipse中java获得mysql的查询结果集

不废话,先上代码,再上解释说明 1 package com.ningmeng; 2 3 import java.sql.*; 4 /** 5 * 1:获取查询结果集 6 * @author biexiansheng 7 * 8 */ 9 public class Test03 { 10 11 public static void main(String[] args) { 12 try { 13 Class.forName("com.mysql.jdbc.Driver"); 14 Sy

jdbc查询sybase参数过多问题

公司的数据库一直是sybase,用起来也挺好的,最新客户现场出现一个问题,数据无法传输了,看日志非常简单,一下就定位到了原因. 很简单,参数超过了2000个,因为这个功能是根据主表的主键查询子表,方法用的是where 主表id in (?,?,?,?--)方式,参数问号最多是是2000个,不过这就奇怪了,直接使用sql查询sybase,5000个参数也没问题,看来是jdbc驱动的问题了. 我们公司用sybase也有十多年了,这方面还是很有研究的,请教了几个人,jdbc连接sybase的驱动之前用

ADO.NET(完整修改和查询、实体类,数据访问类)

一.完整修改和查询 在编写c#语句时需考虑到用户体验,例如在编写修改语句时,需要考虑到输入的内容在数据库中是否能够找到. 中间变量运用. 1.先查 2.执行操作 完整修改语句: bool has = false; Console.Write("请输入要修改的用户名:"); string Uname = Console.ReadLine(); //到数据库中查询输入的用户名是否存在 SqlConnection conn = new SqlConnection("server=.

oracle分页查询结果集重复问题&解决方法

做项目时,无意间发现了分页上的一个bug,在此记录一下: 首先手动将后台输出的sql语句复制进oracle中查看,以便排查错误,对比以下视图前10条的结果集与10到20条的结果集,发现大部分记录出现重复现象,SQL语句如下: --前10条记录 select *   from (select row_.*, rownum rownum_           from (select t.idcard, count(1)                   from sampling.v_unvou

DB2 SQL查询结果集自动编号、返回条数范围控制研究

DB2 SQL查询结果集自动编号.返回条数范围控制研究 摘要: DB2 SQL语句实现查询的记录自动编号.并根据编号进一步实现记录范围控制.分页查询. 环境: IBM DB2 Universal V9.1 Windows XP Professional 要求:写一个SQL语句,在查询结果中要显示出记录序号,这个序号是是根据记录顺序自动生成的. 测试初始化DB2 SQL脚本: drop table t_test; create table t_test (bs        bigint     

SqlServer中循环查询结果集

declare @id int,@value nvarchar(100); begin declare c_test_main cursor fast_forward for select hps_hpId,hps_time from hospitalPermSupp where hps_usId=1; open c_test_main;--打开游标 while 1=1 --开始循环 begin fetch next from c_test_main into @id,@value; --赋值到