您当前的位置: 首页 > 网站编程 > JSP教程 > 封装数据库操作,Javabean给数据库瘦身

封装数据库操作,Javabean给数据库瘦身

作者:guanchaofeng 来源:本站整理 发布时间: 2009-07-02 20:52 点击:
封装数据库操作,目的就是为了隐藏java.sql包内的类,在编码中去掉核心的数据库操作代码。以杜绝直接数据库操作容易带来的资源未释放问题。同时也减少了数据库操作的编码量。 但是很多网友在封装时,却喜欢返回结果集(ResultSet对象),那么这个封装就没有意

封装数据库操作,Javabean给数据库瘦身

  封装数据库操作,目的就是为了隐藏java.sql包内的类,在编码中去掉核心的数据库操作代码。以杜绝直接数据库操作容易带来的资源未释放问题。同时也减少了数据库操作的编码量。
  
  但是很多网友在封装时,却喜欢返回结果集(ResultSet对象),那么这个封装就没有意义了。
  
  1.又是直接操作核心数据库类,跟封装前几乎没什么变化。
  
  2.结果集总是依赖于它使用的连接(Connection)对象。因此当连接对象在方法内被关闭后,你返回的ResultSet就没有用了。
  
  如果真的要获得查询数据库的结果集,就把结果集对象内的所有数据,转储到以Map为元素的List对象内。
  
  当然,这种方式,不能适应大数据量的查询,不过如果真的碰到大数据量的查询,那用什么封装都不好,还是得直接数据库操作.:)))
  
  下面是简单的数据库操作Javabean的代码
  
  DbWrapper.java
  
  importjava.sql.*;
  
  importjava.util.*;
  
  publicclassDbWrapper
  
  {
  
  //定义连接池对象为静态变量,将一直存在,直到工作目录关闭。
  
  privatestaticDataSourceds=null;
  
  //1.用连接池的方式获得连接
  
  //如果不是做多数据库程序,推荐使用此方法
  
  //相关内容:在tomcat管理界面配置连接池
  
  publicstaticConnectionopenConnection()throwsException
  
  {
  
  //只需要初始化1次
  
  if(ds==null)
  
  {
  
  ContextinitContext=newInitialContext();
  
  ContextenvContext=(Context)initContext.lookup("java:/comp/env");
  
  DataSourceds=(DataSource)envContext.lookup("jdbc/MyDataSource");
  
  }
  
  returnds.getConnection();
  
  }
  
  //2.用jdbc驱动获得连接
  
  //相关内容:JSP数据库连接大全
  
  publicstaticConnectionopenConnection(
  
  Stringdriver,
  
  Stringurl,
  
  Stringusername,
  
  Stringpassword)
  
  throwsException
  
  {
  
  Class.forName(driver).newInstance();
  
  returnDriverManager.getConnection(url,username,password);
  
  }
  
  publicstaticvoidcloseConnection(Connectionconn)throwsException
  
  {
  
  if(conn!=null)
  
  {
  
  conn.close();
  
  }
  
  }
  
  publicstaticintexecuteUpdate(Stringsql)throwsException
  
  {
  
  intcount=0;
  
  Connectionconn=null;
  
  Statementstmt=null;
  
  try
  
  {
  
  conn=openConnection();
  
  stmt=conn.createStatement();
  
  count=stmt.executeUpdate(sql);
  
  }
  
  catch(Exceptione)
  
  {
  
  throwe;
  
  }
  
  finally
  
  {
  
  closeConnection(conn);
  
  }
  
  returncount;
  
  }
  
  publicstaticListexecuteQuery(Stringsql)throwsException
  
  {
  
  Listlist=newArrayList();
  
  Connectionconn=null;
  
  Statementstmt=null;
  
  ResultSetrs=null;
  
  try
  
  {
  
  conn=openConnection();
  
  stmt=conn.createStatement();
  
  rs=stmt.executeQuery(sql);
  
  ResultSetMetaDatarsmd=rs.getMetaData();
  
  while(rs.next())
  
  {
  
  Mapmap=newHashMap();
  
  for(inti=1;i<=rsmd.getColumnCount();i++)
  
  {
  
  map.put(rsmd.getColumnName(i),rs.getObject(i));
  
  }
  
  list.add(map);
  
  }}
  
  catch(Exceptione)
  
  {
  
  e.printStackTrace();
  
  }
  
  finally
  
  {
  
  if(rs!=null)rs.close();
  
  closeConnection(conn);
  
  }
  
  returnlist;}
  
  }
  
  使用示例:
  
  //1.对于insert,update,delete语句intcount=DbWrapper.executeUpdate(sql);
  
  //2.对于selete语句
  
  java.util.Listlist=DbWrapper.executeQuery(sql);
  
  //方法一:按名字取值,注意大小写是严格区分的
  
  for(inti=0;i<list.size();i++)
  
  {
  
  java.util.Mapmap=(java.util.Map)list.get(i);
  
  out.println(mag.get("column_name").toString());
  
  }
  
  //方法二:遍历取值
  
  for(inti=0;i<list.size();i++)
  
  {
  
  java.util.Mapmap=(java.util.Map)list.get(i);
  
  for(java.util.Iteratorit=map.keySet().iterator();it.hasNext();)
  
  {
  
  Stringcolumn_name=it.next().toString());//取值时注意null判断
  
  out.println(column_name+"="+map.get(column_name)==null?"":map.get(column_name).toString());
  
  }
  
  }

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