网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.J2EE应用开发中与Oracle数据库的.
.Servlet2.3 API小介.
.JavaCard开发教程之消息模型.
.FreeSpace 属性.
.将Java程序变成Windows系统服务.
.在无线J2ME设备上实现超文本传输.
.字符串分割的两种方法.
.java日记:学习java一年体会4.
.Java 性能优化技巧集锦 (1).
.用struts+spring+hibernate组装w.
.用 for/in 在 Java 5.0 中增强循.
.用Spring JMS使异步消息变得简单.
.用于正则表达式的抽象JavaAPI.
.Java数据对象技术JDO初步概览.
.共享有限的资源.
.Hashtable简易数据库程序.
.充分利用 EJB 使移动工作群体变得.
.Java访问数据库的速度瓶颈问题的.
.使用GameCanvas制作星空效果.
.开发java 工具集.

用一个JavaBean封装JDBC操作

发表日期:2008-1-5



  关于数据库在项目开发中的重要性,我想不用我在此多费唇舌;因此关于对数据库操作的重要性我想更不需要我在此大声疾呼!然而你是否思考过这样的几个问题:在你的每一个项目中共有多少子项目需要对数据库进行操作?你为此设计的操作数据库的JavaBean是否能满足不同子项目的要求?当用户要求采用其他数据库系统时你是否需要对已经编译好的Class文件重新编译?
  
  假如你是一位很勤奋的程序员,你可能会说:“无所谓,只要修改一下连接方式然后再编译一下就OK了!”然而你是否曾经想过,假如我们可以花一点时间把这个JavaBean完善一下,我们甚至连这种“修改”都可以省去?
  
  笔者并不是一个勤奋的程序员,因此希望通过一个JavaBean来完成对数据库的大部分操作,同时希望该JavaBean能够满足对目前大部分主流数据库的操作。在此基础上写了一个JavaBean,目前暂时命名为LPWDatabaseOperation。以下为该JavaBean的相关信息:
  
  一、支持对Oracle、Sybase、mysql、SQLServer、DB2、PostgreSQL、Jdbc-Odbc-Bridge等数据库的DriverManager格式的操作;
  
  二、提供了以Tomcate服务器为平台的数据源的操作(其他诸如WebLogic、WebSphere等大型服务器通常通过实体Bean来访问数据库,因此本程序没有提供对这两种服务器数据源的访问,但保留了相应位置,有爱好的读者可以自己进行补充。);
  
  三、使用了唯一的一个方法executeSQL对数据的增加、删除、修改和查询等操作进行统一处理,省去了记忆多个方法的麻烦;
  
  四、提供了对分页显示的简单支持。
  
  本文提供了该JavaBean的完整源代码,同时源代码中有具体的文档注释,有爱好的读者可以将其编译成开发文档,以供随时参考。源代码如下:
  package lpw.beans;
  
  import java.sql.DriverManager;
  import java.sql.Connection;
  import java.sql.PreparedStatement;
  import java.sql.ResultSet;
  import javax.sql.DataSource;
  import javax.naming.Context;
  import javax.naming.InitialContext;
  
  /
  

Title:


  

Description:


  

Copyright: Copyright 2004


  

Company: 吕培文


  @author not attributable
  @version 1.0
  /
  public class LPWDatabaseOperation
  {
  /
  使用Oracle格式的DriverManager
  @see LPWDatabaseOperation#getUseContextType
  /
  public final int useOracleDriverManager = 0;
  /
  使用Sybase格式的DriverManager
  @see LPWDatabaseOperation#getUseContextType
  /
  public final int useSybaseDriverManager = 1;
  /
  使用MySQL格式的DriverManager
  @see LPWDatabaseOperation#getUseContextType
  /
  public final int useMysqlDriverManager = 2;
  /
  使用SQLServer格式的DriverManager
  @see LPWDatabaseOperation#getUseContextType
  /
  public final int useSqlserverDriverManager = 3;
  /
  使用DB2格式的DriverManager
  @see LPWDatabaseOperation#getUseContextType
  /
  public final int useDb2DriverManager = 4;
  /
  使用Informix格式的DriverManager
  @see LPWDatabaseOperation#getUseContextType
  /
  public final int useInformixDriverManager = 5;
  /
  使用PostgreSQL格式的DriverManager
  @see LPWDatabaseOperation#getUseContextType
  /
  public final int usePostgresqlDriverManager = 6;
  /
  使用Jdbc-Odbc-Bridge格式的DriverManager
  @see LPWDatabaseOperation#getUseContextType
  /
  public final int useJdbcOdbcBridge = 7;
  /
  使用Tomcate格式的DataSource
  @see LPWDatabaseOperation#getUseContextType
  /
  public final int useTomcateDataSource = 8;
  /
  使用WebLogic格式的DataSource
  @see LPWDatabaseOperation#getUseContextType
  /
  public final int useWeblogicDataSource = 9;
  /
  使用WebSphere格式的DataSource
  @see LPWDatabaseOperation#getUseContextType
  /
  public final int useWebsphereDataSource = 10;
  /////////////////////////////////////////////////////////
  private String[] driverManagerType;
  private int useContextType;
  private int pageSize,pageCount,absolutePage,recordCount;
  //////////////////////////////////////////////////////////
  private Connection connection;
  private PreparedStatement preparedStatement;
  private ResultSet resultSet;
  
  /
  构造LPWDatabaseOperation。
  在构造时需选择所使用的环境类型,
  LPWDatabaseOperation支持多种主流的DriverManager驱动及DataSource环境,
  并定义了一些常用DriverManager和DataSource的标准格式,
  其中包括Oracle、Sybase、MySQL、SQLServer等主流数据库的DriverManager格式,
  以及Jdbc-Odbc-Bridge的标准格式,
  同时还提供了Tomcate、WebLogic和WebSphere下DataSource的标准格式,
  程序员在使用时只需要选择相应的常量即可。
  @param useContextType int
使用的环境类型
  @see LPWDatabaseOperation#getUseContextType
  /
  public LPWDatabaseOperation(int useContextType)
  {
  if(useContextType<0) useContextType = 0;
  if(useContextType>7) useContextType = 7;
  this.useContextType = useContextType;
  /////////////////////////////////////////////////////////
  this.driverManagerType[this.useOracleDriverManager] = new String("oracle.jdbc.driver.OracleDriver");
  this.driverManagerType[this.useSybaseDriverManager] = new String("com.sybase.jdbc.SybDriver");
  this.driverManagerType[this.useMysqlDriverManager] = new String("com.mysql.jdbc.Driver");
  this.driverManagerType[this.useSqlserverDriverManager] = new String("com.microsoft.jdbc.sqlserver.SQLServerDriver");
  this.driverManagerType[this.useDb2DriverManager] = new String("com.ibm.db2.jdbc.app.DB2Driver");
  this.driverManagerType[this.useInformixDriverManager] = new String("com.informix.jdbc.IfxDriver");
  this.driverManagerType[this.usePostgresqlDriverManager] = new String("org.postgresql.Driver");
  this.driverManagerType[this.useJdbcOdbcBridge] = new String("sun.jdbc.odbc.JdbcOdbcDrive");
  /////////////////////////////////////////////////////////
  this.pageSize = 20;
  this.pageCount = 0;
  this.absolutePage = 0;
  this.recordCount = 0;
  //////////////////////////////////////////////////////////
  this.connection = null;
  this.preparedStatement = null;
  this.resultSet = null;
  }
  
  /
  打开数据库,需要给该方法提供数据库的URL地址、用户名称及用户密码。
  成功打开数据库后便可通过executeSQL方法对数据库进行操作。
  @param databaseURL String
数据库的URL地址,假如使用DataSource则为数据库的JNDI-Name
  @param userName String
用户名称
  @param passWord String
用户密码
  @throws java.sql.SQLException
  @throws java.lang.ClassNotFoundException
  @throws javax.naming.NamingException
  /
  public void openDatabase(String databaseURL,String userName,String password)
  throws java.sql.SQLException,java.lang.ClassNotFoundException,javax.naming.NamingException
  {
  if(this.useContextType>=0 && this.useContextType<=this.useJdbcOdbcBridge)
  {
  Class.forName(this.driverManagerType[this.useContextType]);
  this.connection = DriverManager.getConnection(databaseURL,userName,password);
  }
  else if(this.useContextType==this.useTomcateDataSource)
  {
  Context context = new InitialContext();
  DataSource dataSource = (DataSource)context.lookup(databaseURL);
  this.connection = dataSource.getConnection(userName,password);
  }
  else if(this.useContextType==this.useWeblogicDataSource)
  {
  }
  else if(this.useContextType==this.useWebsphereDataSource)
  {
  }
  }
  
  /
  执行SQL语句,可以是Select、Insert、Delete、Update中的任何一个。
  @param sql String
欲被执行的SQL语句
  @return ResultSet
假如执行查询操作,则返回该查询操作的ResultSet;假如执行的是其它操作,则返回null。
  @throws java.sql.SQLException
  /
  public ResultSet executeSQL(String sql) throws java.sql.SQLException
  {
  sql = sql.trim();
  this.preparedStatement = this.c
上一篇:mysql与JDBC中文问题的解决方法 人气:1212
下一篇:体验 JDBC 2.0 规范的一些新东西 人气:1081
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐