一个封装了数据库大部分操作的JavaBean
2006-07-06 02:18
711 查看
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格式
*
*/
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.Statement stmt; //用语执行不带参数的简单sql语句
private java.sql.PreparedStatement prep
4000
aredStatement;//用于执行带或不带in参数的预编译sql语句
//private java.sql.CallableStatement ctmt;//用于执行对数据库以存储过程的调用
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);
}
}
/**
* 该方法执行sql语句,可以是select,insert,update,delete,等等常用的SQL语句
* 查询结果返回后,必须调用void dbClose()方法来释放所有资源
*
* @param sql String类型的sql查询语句
* @return 如果执行select查询将返回一个ResultSet对象,否则返回null
* @exception 该方法将抛出java.sql.SQLException异常
*/
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") ){
resultSet = preparedStatement.executeQuery();
return resultSet;
}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){
}
}
}
}
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格式
*
*/
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.Statement stmt; //用语执行不带参数的简单sql语句
private java.sql.PreparedStatement prep
4000
aredStatement;//用于执行带或不带in参数的预编译sql语句
//private java.sql.CallableStatement ctmt;//用于执行对数据库以存储过程的调用
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);
}
}
/**
* 该方法执行sql语句,可以是select,insert,update,delete,等等常用的SQL语句
* 查询结果返回后,必须调用void dbClose()方法来释放所有资源
*
* @param sql String类型的sql查询语句
* @return 如果执行select查询将返回一个ResultSet对象,否则返回null
* @exception 该方法将抛出java.sql.SQLException异常
*/
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") ){
resultSet = preparedStatement.executeQuery();
return resultSet;
}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){
}
}
}
}
相关文章推荐
- 编写一个封装用户信息的JavaBean对象,通过操作JavaBean的动作标识,输出用户的注册信息。
- C#中一个操作数据库的类的封装,以前写的,被同学改过,很不完善
- asp.net 自己封装数据库操作一个类中一个自定义方法Execute(),非常实用,省去了麻烦的中间过程,动态参数
- 一个操作cookie的javabean
- 封装JAVA数据库操作
- Java封装JDBC数据库增、删、改、查操作成JAR文件,以供Web工程调用,适用于多种数据库
- PHP中将对数据库的操作,封装成一个工具类以及学会使用面向对象的方式进行编程
- Javabean反射入门(数据库中一个表的字段用来名称,另一个表用来存储名称对应的值)
- 封装JAVA数据库操作
- Java操作数据库之类的封装!...
- JavaBean之封装Jdbc操作
- Jsp+servlet+javabean使用Lucene3.6.2做一个简单数据库搜索的总结(2)
- 封装一个ado的数据库操作
- JDBC数据源(DataSource)数据源技术是Java操作数据库的一个很关键技术,流行的持久化框架都离不开数据源的应用。
- Java链接数据库及操作数据库的JavaBean
- 封装了一个Java数据库访问管理类
- Java操作数据库之类的封装!...
- 一个利用ADO.net操作数据库很好的操作封装
- JAVA 数据库操作工具类(项目封装,mySQL)
- 动态从excel取出数据,并封装动态javabean存入数据库