首页 > 学院 > 开发设计 > 正文

用一个JavaBean封装JDBC操作

2019-11-18 12:38:41
字体:
来源:转载
供稿:网友

  关于数据库在项目开发中的重要性,我想不用我在此多费唇舌;因此关于对数据库操作的重要性我想更不需要我在此大声疾呼!然而你是否思考过这样的几个问题:在你的每一个项目中共有多少子项目需要对数据库进行操作?你为此设计的操作数据库的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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表