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

📄 dboperation.java

📁 jsp购物车源码,解压密码的要说明密码www.kj.com
💻 JAVA
字号:
/*
 *  @(#)DBOperation.java	1.0 06/03/05
 *
 *  Copyright 2006 林刘炜
 */


package beans;

import java.sql.*;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
import java.sql.Connection;
import java.sql.DriverManager;



 /**
  *	该Bean是一个数据库操作Bean
  * 内部封装了对数据库的大部分基本操作
  *	Bean支持多种主流数据库的DriverManager格式
  * 以及标准的jdbc-odbc-bridge格式
  *
  * @version 1.0
  * @author  林刘炜
  */
public class DBOperation{	
	
	/**
     * 使用Oracle格式的DriverManager
     * @see #getUseContextType
     */ 
	public static final int USE_ORACLE_DRIVERMANAGER = 0;
	/**
     * 使用MySQL格式的DriverManager
     * @see #getUseContextType
     */ 
    public static final int USE_MYSQL_DRIVERMANAGER = 1;
	/**
     * 使用SQLServer格式的DriverManager
     * @see #getUseContextType
     */ 
    public static final int USE_SQLSERVER_DRIVERMANAGER = 2;
	/**
     * 使用Sybase格式的DriverManager
     * @see #getUseContextType
     */ 
    public static final int USE_SYBASE_DRIVERMANAGER = 3;
	/**
     * 使用Jdbc-Odbc-bridge格式的DriverManager
     * @see #getUseContextType
     */ 
    public static final int USE_JDBCODBC_DRIVERMANAGER = 4;
    
    private String[] driverManagerType;		//存放DriverManager格式类型的字符串数组
    private int useContextType;				//当前使用DriverManager的驱动类型
	private java.sql.ResultSet resultSet;	//返回查询结果的记录集集合
	private java.sql.PreparedStatement preparedStatement;//用于执行带或不带in参数的预编译sql语句
	private java.sql.Connection connection;	//与给定的数据库建立连接

	
	//该方法执行一些初始化工作
	private void init(){
		driverManagerType = new String[5];
		driverManagerType[USE_ORACLE_DRIVERMANAGER] = new String("oracle.jdbc.driver.OracleDriver");
		driverManagerType[USE_MYSQL_DRIVERMANAGER] = new String("com.mysql.jdbc.Driver");
		driverManagerType[USE_SQLSERVER_DRIVERMANAGER] = new String("com.microsoft.jdbc.sqlserver.SQLServerDriver");		
		driverManagerType[USE_SYBASE_DRIVERMANAGER] = new String("com.sybase.jdbc.SybDriver");		
		driverManagerType[USE_JDBCODBC_DRIVERMANAGER] = new String("sun.jdbc.odbc.JdbcOdbcDriver");
		resultSet = null;
		preparedStatement = null;
		connection = null;	
	}
	
	/**
     * 该构造方法不带参数
     * 默认使用Jdbc-Odbc-bridge格式的DriverManager驱动
     * 并调用openDatabase()方法与数据库建立连接      
     * 这是我为了方便而写的,大家可以根据自己的需要改成自己适合的
     * 
     * @see #DBOperation
     * @see #openDatabase
     */
	public DBOperation(){
		//我用的是Access数据库,没有用数据源,大家根据自己mdb文件的路径改改就行了
		String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=E:/Tomcat 5.0/webapps/jsp/mydatabase.mdb";
		try{
			init();						
			Class.forName(driverManagerType[DBOperation.USE_JDBCODBC_DRIVERMANAGER]);
			connection = DriverManager.getConnection(url);			
		}catch(Exception e){
			e.printStackTrace();
		}
	}	

	
     /**
	  * 构造一个新的<b>DBOperation</b>
	  * 在构造时需要选择相应的DriverManager驱动格式
	  * 该Bean中定义了Oracle,MySQL,SQLServer,Jdbc-Odbc-bridge四中常用的驱动格式
	  * 在使用时只需要选择相应的常量即可
	  * 
	  * @prame useContextType int使用的驱动格式
	  * @see #getContextType
	  */
	public DBOperation(int useContextType){
		if( useContextType < 0){
			useContextType = 0;
		}else if( useContextType > 4){
			useContextType = 4;			
		}
		this.useContextType = useContextType;
		init();	
	}	
	
     /**
	  * 该方法打开数据库,需要给该方法提供三个参数,数据库的URL,用户名和密码
	  * 打开数据库建立连接后,就可以使用executeSQL(String sql)方法对数据库执行操作
      * 并捕获SQLException异常
      *
      * @prame dataBaseURL String数据库连接地址
      * @prame id String用户名
      * @prame pwd String密码
	  * @see #executeSQL
	  * @exception 该方法将抛出java.sql.SQLException,java.lang.ClassNotFoundException异常
	  */
    public void openDatabase(String databaseURL,String id,String pwd)throws java.sql.SQLException,java.lang.ClassNotFoundException{
		if(useContextType <= 0 || useContextType >=4 ){	
			Class.forName(driverManagerType[useContextType]);	
			connection = DriverManager.getConnection(databaseURL,id,pwd);								
		}
    }    

    /**
     * 返回一个可执行in参数的SQL语句容器
     * 执行该方法后必须调用closeDatabase()方法来释放所有资源
     *
     * @parma sql 一个预备执行的SQL语句
     * @return PreparedStatement
     * @exception 该方法将抛出java.sql.SQLException异常
     * @see #closeDatabase
     */
    public PreparedStatement getPreparedStatement(String sql)throws java.sql.SQLException{
    	return preparedStatement = connection.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);    
    }
    
    /**
     * 该方法执行sql语句,可以是select,insert,update,delete,等等常用的SQL语句
     * 执行该方法后必须调用closeDatabase()方法来释放所有资源
     *
     * @param sql String类型的sql查询语句
     * @return 如果执行select查询将返回一个ResultSet对象,否则返回null
     * @exception 该方法将抛出java.sql.SQLException异常
     * @see #closeDatabase
     */
    public ResultSet executeSQL(String sql)throws SQLException{ 
    	sql = sql.trim();    	
    	preparedStatement = connection.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);    	
    	if( sql.substring(0,1).equalsIgnoreCase("s") ){    	
    		return resultSet = preparedStatement.executeQuery();    
    	}else{
    		preparedStatement.executeUpdate();
    		return null;
    	}   			
    }     

	/**
     * 最后调用该方法关闭与数据库建立的连接,释放所有资源
     * 
     * @exception 该方法将抛出java.sql.SQLException异常
     */
    public void closeDatabase()throws java.sql.SQLException{
		if( resultSet != null ){
			resultSet.close();
		}
		if( preparedStatement != null ){
			preparedStatement.close();
		}
		if( connection != null ){
			connection.close();
		}     	
    }

    
    /**
     * main方法把该Bean当做一个application测试时使用,真正发布时可以删除
     */
    public static void main(String[] args){
    	DBOperation database = new DBOperation();
    	try{   	   			
    		ResultSet rst = database.executeSQL("select * from buyerInfo");
    		while( rst.next() ){ 
    			System.out.println (rst.getString("id"));
   				System.out.println (rst.getString("name"));
    		}    	
    	}catch(Exception e){
    		e.printStackTrace();
    	}finally{
    		try{
  				database.closeDatabase();	
    		}catch(SQLException e){
    		}	
    	}	
    }
}

⌨️ 快捷键说明

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