您当前的位置: 首页 > 网站编程 > JSP教程 > JDBC之代码重复使用

JDBC之代码重复使用

作者:guanchaofeng 来源:不详 发布时间: 2009-05-22 20:59 点击:
在使用JDBC连接数据库的时,我们会采用executeQuery(Stringsql)获得一个结果集。当数据库结构变化或者获得其他数据库表结果集的时候我们需要将ResultSet结果集根据不同的数据结构重新遍历。 如何才能建立一个与数据库结构无关的JDBC连接呢?我们可以通过使用

JDBC之代码重复使用

  在使用JDBC连接数据库的时,我们会采用executeQuery(Stringsql)获得一个结果集。当数据库结构变化或者获得其他数据库表结果集的时候我们需要将ResultSet结果集根据不同的数据结构重新遍历。
  如何才能建立一个与数据库结构无关的JDBC连接呢?我们可以通过使用ResultSetMetaData()方法获得表结构。然后使用Object[]数组遍历结果集。当我们要取得相应的结果时,我们可以使用Iterator迭代器。只要遍历迭代器就可以取出结果。
  下面是我写的一个方法:
  1importjava.math.BigDecimal;
  2importjava.sql.Connection;
  3importjava.sql.DriverManager;
  4importjava.sql.ResultSet;
  5importjava.sql.ResultSetMetaData;
  6importjava.sql.SQLException;
  7importjava.sql.Statement;
  8importjava.util.ArrayList;
  9importjava.util.Iterator;
  10importjava.util.List;
  11
  12publicclassnewJdbc{
  13privateStringurl="jdbc:oracle:thin:@localhost:1521:nitpro";
  14
  15privateStringdbUserName="scott";
  16
  17privateStringdbUserPassword="tiger";
  18
  19privateConnectionconn=null;
  20
  21privateStatementstmt=null;
  22
  23privateResultSetrs=null;
  24
  25publicnewJdbc(){
  26try{
  27Class.forName("oracle.jdbc.driver.OracleDriver");
  28}catch(ClassNotFoundExceptione){
  29e.printStackTrace();
  30}
  31}
  32
  33publicConnectiongetConnection(){
  34try{
  35conn=DriverManager.getConnection(url,dbUserName,dbUserPassword);
  36}catch(SQLExceptione){
  37e.printStackTrace();
  38}
  39returnconn;
  40}
  41
  42publicvoidclose(ResultSetrs,Statementstmt,Connectionconn){
  43if(rs!=null){
  44try{
  45rs.close();
  46}catch(SQLExceptione){
  47e.printStackTrace();
  48}
  49}
  50if(stmt!=null){
  51try{
  52stmt.close();
  53}catch(SQLExceptione){
  54e.printStackTrace();
  55}
  56}
  57if(conn!=null){
  58try{
  59conn.close();
  60}catch(SQLExceptione){
  61e.printStackTrace();
  62}
  63}
  64}
  65
  66publicListquery(Stringsql){
  67Listlist=newArrayList();
  68
  69conn=this.getConnection();
  70try{
  71stmt=conn.createStatement();
  72rs=stmt.executeQuery(sql);
  73//获取数据库表结构
  74ResultSetMetaDatarsm=rs.getMetaData();
  75//取得数据库的列数
  76intcol=rsm.getColumnCount();
  77//生成col长度的Object数组
  78Object[]obj=newObject[col];
  79//遍历结果集,将结果存入Object数组
  80while(rs.next()){
  81for(inti=0;i<col;i++){
  82obj[i]=rs.getObject(i+1);
  83}
  84list.add(obj);
  85}
  86}catch(SQLExceptione){
  87e.printStackTrace();
  88}finally{
  89this.close(rs,stmt,conn);
  90}
  91returnlist;
  92}
  93
  94publicvoidupdate(Stringsql){
  95try{
  96conn=this.getConnection();
  97stmt=conn.createStatement();
  98stmt.executeUpdate(sql);
  99}catch(SQLExceptione){
  100e.printStackTrace();
  101}
  102}
  103
  104publicstaticvoidmain(Stringargs[]){
  105newJdbcnj=newnewJdbc();
  106Stringsql="select*fromusers";
  107Listlist=nj.query(sql);
  108//返回list的迭代器
  109Iteratorit=list.iterator();
  110//遍历迭代器,取出结果
  111while(it.hasNext()){
  112Object[]o=(Object[])it.next();
  113intid=((BigDecimal)o[0]).intValue();
  114System.out.println(id);
  115}
  116
  117}
  118}

分享到:
本文"JDBC之代码重复使用"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4