`
breezedancer
  • 浏览: 19276 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

一个通用查询(原创)

阅读更多
java 代码
  1. package com.abc.www;   
  2.   
  3. import java.lang.reflect.InvocationTargetException;   
  4. import java.lang.reflect.Method;   
  5. import java.sql.*;   
  6. import java.util.ArrayList;   
  7.   
  8. public class NewTestReflect {   
  9.   
  10. public static void main(String[] args) throws Exception {   
  11.    NewTestReflect newtestreflect=new NewTestReflect();   
  12.    newtestreflect.select("select * from test""com.tangshun.www.Person");   
  13. }   
  14.   
  15. private static String getSetMethodName(String columnName) {   
  16.    return "set" + columnName.substring(01).toUpperCase()   
  17.      + columnName.toLowerCase().substring(1);   
  18. }   
  19.   
  20. /**  
  21.    * 需要提供sql语句,以及操作数据库表对应的类名字(包括包名)  
  22.    * 如:select * from test;则类名字应该是   包.Test  
  23.    * Test.java是一个简单的pojo,对数据库里面的字段只有相应的set get方法  
  24.    * 如果有必要,可以增加其他相关的构造方法等  
  25.    * @param sql  
  26.    * @param className  
  27.    * @return ArrayList  
  28.    */  
  29. public ArrayList select(String sql, String className) {   
  30.    Connection connection = null;   
  31.    PreparedStatement stmt = null;   
  32.    ResultSet rs = null;   
  33.    ArrayList paraList = new ArrayList();   
  34.    try {   
  35.     Class.forName("com.mysql.jdbc.Driver");   
  36.     connection = DriverManager.getConnection(   
  37.       "jdbc:mysql://localhost/test""root""123456");   
  38.     stmt = connection.prepareStatement(sql);   
  39.     rs = stmt.executeQuery();   
  40.     Object c1 = null;   
  41.     ResultSetMetaData rsmd = rs.getMetaData();//获得元数据   
  42.     int columnCount = rsmd.getColumnCount();//获得查询的列数个数   
  43.     while (rs.next()) {   
  44.      c1 = Class.forName(className).newInstance();//根据String型的类名,得到一个Object   
  45.      for (int i = 1; i <= columnCount; i++) {//循环设置该类的set方法的相关属性   
  46.       Method m = c1.getClass().getMethod(   
  47.         getSetMethodName(rsmd.getColumnName(i)),   
  48.         Class.forName(rsmd.getColumnClassName(i)));//获得方法   
  49.       m.invoke(c1, rs.getObject(rsmd.getColumnName(i)));//设置set,此处用ResultSet.getObject(String s)方法   
  50.      }   
  51.      paraList.add(c1);//增加到List中   
  52.     }   
  53.     Person p = (Person) paraList.get(0);   
  54.     System.out.println(p.getName());   
  55.   
  56.    } catch (SQLException ex) {   
  57.     ex.printStackTrace();   
  58.    } catch (ClassNotFoundException e) {   
  59.     e.printStackTrace();   
  60.    } catch (NoSuchMethodException e) {   
  61.     e.printStackTrace();   
  62.    } catch (InvocationTargetException e) {   
  63.     e.printStackTrace();   
  64.    } catch (IllegalAccessException e) {   
  65.     e.printStackTrace();   
  66.    } catch (InstantiationException e) {   
  67.     e.printStackTrace();   
  68.    } finally {   
  69.     try {   
  70.      rs.close();   
  71.      rs = null;   
  72.     } catch (Exception ex) {   
  73.     }   
  74.     try {   
  75.      stmt.close();   
  76.      stmt = null;   
  77.     } catch (Exception ex) {   
  78.     }   
  79.    }   
  80.    try {   
  81.     connection.close();   
  82.     connection = null;   
  83.    } catch (Exception ex) {   
  84.    }   
  85.   
  86.    return paraList;   
  87. }   
  88.   
  89.   
  90. }   
  91.   
分享到:
评论
7 楼 loveyt 2008-05-20  
多表怎么办?
6 楼 redbaron 2007-06-11  
将取得的arraylist  用最快捷的方式的传导页面上显示出来怎么做
5 楼 aone 2007-05-23  
breezedancer 写道
需要相应的javabean

Class.getMethod(String, Class[])说,它不要Class,它要Class[].
需要什么相应的javabean?
4 楼 breezedancer 2007-05-23  
需要相应的javabean
3 楼 aone 2007-05-23  
引用
Method m = c1.getClass().getMethod(getSetMethodName(rsmd.getColumnName(i)),Class.forName(rsmd.getColumnClassName(i)));//获得方法


getMethod()方法报错了.
The method getMethod(String, Class[]) in the type Class is not applicable for the arguments (String, Class)
2 楼 breezedancer 2007-05-22  
为了学习下反射而写
1 楼 lighter 2007-05-22  
呵呵,通用是通用,大多java的教科书大多有这么写的
为什么不用一下spring封装的JDBC,那一个用起来方便多

相关推荐

    asp txt 通用工资查询系统 v3.8.zip

    asp txt 通用工资查询系统简介 asp txt 通用工资查询系统保密加强版 ,将查询结果发送至指定邮箱以达到保密目的,适合保密性强的各种查询系统。 只需修改 查询条件和顶部、底部文字(非常简单),即可通用于: 1....

    asp通用信息查询管理系统(源代码+论文)_new.rar

    一类资源描述:Java ASP系统毕业设计资源 1. 概述:该资源集中于Java与ASP结合的Web系统毕业设计。对于学生而言,它提供了从初步的构想到实际开发所需的全方位辅助材料,包括论文、设计文档和源代码等。 2. 包含内容...

    基于ThinkPHP5.0 开发的 通用后台 支持多用户 多用户组 权限分配,公共的正删改查(原创)

    【标签】中的“后台”、“源码”、“原创”、“开源”进一步强调了这个项目的特点:它是一个后台管理系统,提供完整的源代码,由开发者原创,并且是开源的,意味着任何人都可以查看、学习、修改和分发这个项目。...

    PHP+Csv(Excel)通用成绩查询系统

    3.新增查询类别:新上传一个数据。注意后缀和原来的一致。查询条件要和inc/conn.Php设置的一样。 4.减少查询类别:请删除数据库目录下对应的文件名, 5.更改查询类别:重命名相应的文件名。 6.修改数据内容:上传新...

    非常好的成绩查询系统

    综合以上信息,这个成绩查询系统可能是一个全面的教育管理解决方案,涵盖了成绩录入、查询、分析和报告等多个环节,同时支持教师、学生和家长的互动。其原创性和针对性设计使其在同类产品中具有竞争优势,对于推动...

    计算机毕业设计-基于ASP通用高校科研管理系统(2009年5月原创)

    标题“计算机毕业设计-基于ASP通用高校科研管理系统(2009年5月原创)”表明这是一个2009年5月份完成的计算机专业毕业设计项目,其核心是构建一个通用的高校科研管理系统。系统采用ASP(Active Server Pages)技术...

    SK信息通用采集系统 v2.0 单机版 -ASP源码.zip

    - ASP源码通常包括多个文件,如HTML模板、VBScript或JScript脚本文件、数据库连接文件等,构成一个完整的系统架构。 6. **安全性与性能** - ASP源码的安全性至关重要,防止SQL注入、跨站脚本攻击(XSS)是开发时...

    音乐通用采集 v1.2 -ASP源码.zip

    总的来说,《音乐通用采集 v1.2 ASP源码》提供了一个方便的音乐资源采集解决方案,对于熟悉ASP的开发者来说,这是一个很好的学习和实践案例,可以帮助他们深入理解服务器端脚本的运用以及动态网站的开发流程。...

    sqleditor 一个用c#写的db2客户端工具(原创)

    【标题】"sqleditor 一个用c#写的db2客户端工具(原创)"揭示了这是一个基于C#编程语言开发的DB2数据库管理工具。它主要用于提供对DB2数据库的便捷访问和操作功能。 【描述】中提到的关键点包括: 1. **.NET2.0框架...

    图书管理系统(陈表达原创-通用1).xlsm

    图书管理系统1 图书管理系统,可以进行图书信息维护,...归还后将不再显示在归还窗体,如需查询归还记录,可以到第二个表查看归还记录,在图书档案窗体,可修改图书档案信息,备注等等,下面是图书档案信息表和窗体展示

    图书管理系统(陈表达原创--通用2).xlsm

    图书管理系统1 图书管理系统,可以进行图书信息维护,...归还后将不再显示在归还窗体,如需查询归还记录,可以到第二个表查看归还记录,在图书档案窗体,可修改图书档案信息,备注等等,下面是图书档案信息表和窗体展示

    工具是一款集合站长日常查询使用

    PR值查询是站长评估网站在搜索引擎排名表现的一个重要指标,通过定期查询可以了解网站优化的效果。 2. 百度指数:这是百度提供的一个服务,显示特定关键词在一定时间内的搜索热度。通过对关键词的百度指数进行分析...

    原创程序- Web版数据库管理

    由于描述部分为空,我们无法获取到具体实现细节或功能特性,但我们可以推测该原创程序可能包含以下通用功能:用户登录验证、数据库连接管理、SQL查询执行、数据表查看、数据编辑以及备份与恢复等。考虑到标签中的...

    应用源码企业通用公司宣传应用源码.zip

    10. **毕业设计**:如果你是学生,这个源码可以作为毕业设计的一个参考。它展示了一个完整应用的生命周期,从需求分析、设计、编码到测试和部署。 通过深入研究这份源码,开发者不仅可以提升Android编程技能,还能...

    jsp分页组件(原创)

    这个“jsp分页组件”是一个原创的解决方案,专门用于Java Server Pages (JSP) 平台,提供高效且易于使用的分页功能。博主通过分享这篇博文,提供了自己的源码实现,以供开发者参考和学习。 分页组件的主要目标是...

    原创PowerBuilder编程框架

    "原创PowerBuilder编程框架"很可能是一个由开发者自创的框架,旨在简化PB应用的开发过程,提高代码复用性和项目效率。这个框架可能包含了大量预定义的函数、类、对象和组件,开发者可以基于这些元素快速构建功能丰富...

    原创的JDBC封装可支持各种数据库

    提供通用的方法来处理查询结果,例如,可以返回ResultSet对象,或者将其转换为List, Object&gt;&gt;、List&lt;自定义实体类&gt;等形式。 7. **异常处理**: 在封装过程中,应统一处理数据库操作可能出现的SQLException,避免...

    SQL Server 分页查询通用存储过程(只做分页查询用)

    这段存储过程的的原创者(SORRY,忘记名字了),写得这段SQL代码很不错,我在这个基础上,按照我的习惯以及思维方式,调整了代码,只做分页查询用。 /*---------------------------------------------- *procedure ...

    健身房系统数据库设计(新型原创作品)

    这种设计通常包括多个数据库表,每个表对应系统的一个核心功能,如会员表、课程表、预约表等。 描述中的“刚做的一个健身房系统的数据库设计图”暗示了这个数据库设计可能是基于ER(实体关系)模型,通过图形化的...

Global site tag (gtag.js) - Google Analytics