⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbcon.java

📁 一个DB CLASS
💻 JAVA
字号:
package com.eschool; 

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; 

/** 
* <p>Title: </p> 
* <p>Description: </p> 
* <p>Copyright: Copyright  2005</p> 
* <p>Company: Marquis</p> 
* @author not attributable 
* @version 1.0 
*/ 
public class DbCon
{ 
  //////////////////////////////////////////////////////////////////////////// 
  private String driverManagerType; 
  private int pageSize,pageCount,absolutePage,recordCount; 
  //////////////////////////////////////////////////////////////////////////// 
  private Connection connection; 
  private PreparedStatement preparedStatement; 
  private ResultSet resultSet; 

  private String databaseURL; 
  private String userName; 
  private String password; 

  /** 
   * 构造DbOperation?
   * 在构造时需选择所使用的环境类型, 
   * DbOperation支持多种主流的DriverManager驱动及DataSource环境?
   * 并定义了一些常用DriverManager和DataSource的标准格式, 
   * 其中包括Oracle、Sybase、MySQL、SQLServer等主流数据库的DriverManager格式?
   * 以及Jdbc-Odbc-Bridge的标准格式, 
   * 同时还提供了Tomcate、WebLogic和WebSphere下DataSource的标准格式, 
   * 程序员在使用时只需要选择相应的常量即可?
   * @param useContextType int<br>使用的环境类圿
   * @see DbOperation#getUseContextType 
   */ 
  public DbCon() 
  { 
    //////////////////////////////////////////////////////////////////////// 
    this.driverManagerType = new String("org.gjt.mm.mysql.Driver"); 
	this.databaseURL="jdbc:mysql://localhost:3306/xia?useUnicode=true&characterEncoding=gbk"; 
	this.userName="root";
	this.password="";
    //////////////////////////////////////////////////////////////////////// 
    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<br>数据库的URL地址,如果使用DataSource则为数据库的JNDI-Name 
   * @param userName String<br>用户名称 
   * @param password String<br>用户密码 
   * @throws java.sql.SQLException 
   * @throws java.lang.ClassNotFoundException 
   * @throws javax.naming.NamingException 
   */ 
  public void open() 
    throws java.sql.SQLException,java.lang.ClassNotFoundException,javax.naming.NamingException 
  { 
      Class.forName(this.driverManagerType);
      this.connection = DriverManager.getConnection(this.databaseURL,this.userName,this.password); 
  } 

  /** 
   * 执行SQL语句,可以是Select、Insert、Delete、Update中的任何一个?
   * @param sql String<br>欲被执行的SQL语句 
   * @return ResultSet<br>如果执行查询操作,则返回该查询操作的ResultSet;如果执行的是其它操作,则返回null?
   * @throws java.sql.SQLException 
   */ 
  public ResultSet executeSQL(String sql) throws java.sql.SQLException 
  { 
    sql = sql.trim(); 
    this.preparedStatement = this.connection.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); 
    if(sql.substring(0,1).equalsIgnoreCase("s")) 
    { 
      this.resultSet = this.preparedStatement.executeQuery(sql); 
      return this.resultSet; 
    } 
    else 
    { 

      this.preparedStatement.executeUpdate(sql); 
      return null; 
    } 
  } 

  /** 
   * 关闭数据帿
   * @throws java.sql.SQLException 
   */ 
  public void close() throws java.sql.SQLException 
  { 
    if(this.resultSet!=null) 
    { 
      this.resultSet.close(); 
    } 
    if(this.preparedStatement!=null) 
    { 
      this.preparedStatement.close(); 
    } 
    if(this.connection!=null) 
    { 
      this.connection.close(); 
    } 
  } 

  /** 
   * 关闭数据帿
   * @throws java.sql.SQLException 
   */ 
  public void closeRs() throws java.sql.SQLException 
  { 
    if(this.resultSet!=null) 
    { 
      this.resultSet.close(); 
    } 
  } 


  /** 
   * 获得当前使用的环境类型?
   * 这些值由DbOperation定义?br> 
   * useOracleDriverManager - 使用Oracle格式的DriverManager<br> 
   * useSybaseDriverManager - 使用Sybase格式的DriverManager<br> 
   * useMysqlDriverManager - 使用MySQL格式的DriverManager<br> 
   * useSqlserverDriverManager - 使用SQLServer格式的DriverManager<br> 
   * useDb2DriverManager - 使用DB2格式的DriverManager<br> 
   * useInformixDriverManager - 使用Informix格式的DriverManager<br> 
   * usePostgresqlDriverManager - 使用PostgreSQL格式的DriverManager<br> 
   * useJdbcOdbcBridge - 使用Jdbc-Odbc-Bridge格式的DriverManager<br> 
   * useTomcateDataSource - 使用Tomcate格式的DataSource<br> 
   * useWeblogicDataSource - 使用WebLogic格式的DataSource<br> 
   * useWebsphereDataSource - 使用WebSphere格式的DataSource 
   * @see DbOperation#useOracleDriverManager 
   * @see DbOperation#useSybaseDriverManager 
   * @see DbOperation#useMysqlDriverManager 
   * @see DbOperation#useSqlserverDriverManager 
   * @see DbOperation#useDb2DriverManager 
   * @see DbOperation#useInformixDriverManager 
   * @see DbOperation#usePostgresqlDriverManager 
   * @see DbOperation#useJdbcOdbcBridge 
   * @see DbOperation#useTomcateDataSource 
   * @see DbOperation#useWeblogicDataSource 
   * @see DbOperation#useWebsphereDataSource 
   * @return int<br>当前使用的环境类圿
   */ 

  /** 
   * 设置当前将要显示的页码,每页显示的数据行数由setPageSize方法的参数值决定, 
   * 当输入的页码值小丿时,将显示第一页数据; 
   * 当输入的页码值大于最后一页的页码值时,将显示最后一页?
   * 需要注意的是,通过setAbsolutePage来对结果集进行定位,不会使查询结果集发生改变?
   * 而只是对结果集中的指针(cursor)进行了定位?
   * 因此如果程序员想得到真正的分页效果,应参照如下程序实现相应的功能?   * DbOperation database;
   * ResultSet resultSet = database.executeSQL("Select * From Table");
   * database.setPageSize(20); 
   * database.setAbsolutePage(2);
   * for(int i=1;i<=database.getPageSize();i++)
   * {
   *     if(resultSet.isLast())
   *     {
   *         break;
   *     }
   *     resultSet.next();
   * } 
   * @see DbOperation#setPageSize 
   * @param absolutePage int<br>欲显示的页码便
   */ 

///*
public void setAbsolutePage(int absolutePage) 
{ 
    this.getPageCount(); 
    if(absolutePage<1) absolutePage = 1; 
    if(absolutePage>this.pageCount) absolutePage = this.pageCount; 
    this.absolutePage = absolutePage; 
  } 
//*/
  /** 
   * 获得当前显示的页码便
   * @return int<br>当前显示的页码便
   */ 
///*
public int getAbsolutePage() 
{ 
    return absolutePage; 
} 
//*/
  /** 
   * 设置每页显示记录的条数?
   * 当输入的参数值小丿时,每页显示一条记录; 
   * 当输入的参数值大于记录总数时,将显示所有数据; 
   * 默认情况下每页将显示20条记录?
   * 程序员可通过setAbsolutePage方法改变当前显示的页码?
   * @see DbOperation#setAbsolutePage 
   * @param pageSize int<br>每页显示数据的行擿
   */ 
///*
public void setPageSize(int pageSize) 
{ 
    if(pageSize<1) pageSize = 1; 
    this.pageSize = pageSize; 
  } 
//*/
  /** 
   * 获得每页显示记录的条擿
   * @return int<br>每页显示记录的条擿
   */ 
///*
public int getPageSize() 
{ 
    return pageSize; 
  } 
//*/
  /** 
   * 获得记录结果集显示的总的页数,其值为:总的记录擿每页显示的记录数[+1]?
   * @return int<br>记录结果集显示的总的页数 
   */ 
///*
public int getPageCount() 
{ 
    this.getRecordCout(); 
    this.pageCount = this.recordCount/this.pageSize; 
    if((this.recordCount%this.pageSize!=0)) this.pageCount++; 
    return pageCount; 
  } 
//*/
  /** 
   * 获得记录结果集总的记录擿
   * @return int<br>记录结果集总的记录擿
   */ 
///*
  public int getRecordCout() 
  { 
    try 
    { 
      if(this.resultSet.last()) 
      { 
        this.recordCount = this.resultSet.getRow(); 
      } 
      else 
      { 
        this.recordCount = 0; 
      } 
    } 
    catch(java.sql.SQLException e) 
    { 
    } 
    finally 
    { 
    } 

	return this.recordCount; 

  } 
//*/
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -