mysql DBcommon 连接数据库

DBCommon是Java中用于连接MySQL数据库的实用工具类,它通过Apache Commons DBCP库实现数据源管理,提供数据库连接、事务处理、SQL执行等操作。类中包含了初始化数据源、获取数据库连接、执行更新和查询等方法,支持事务的开始、提交、回滚,并提供了处理结果集的各种便利方法。
摘要由CSDN通过智能技术生成
1:package com.xa12343.utils;

import java.io.BufferedReader;
import java.io.Reader;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.Vector;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSource;


 


/**
 * xingsy  
 * **/

public class DBCommon{
    
    public static final  String XPFK="resources/xpfk.properties";
    
    public String getVer(){
        return "DBCommon V2.0@2013-12-04 13:04:23";
    }
    private boolean connected = false;
    private   Connection conn = null;
    private DatabaseMetaData DBMetaData = null;
    private Statement stmt;
 
    private static BasicDataSource  ds;
    
    private ResultSet rs[] ={ null, null, null };
    private Statement stmts[] ={ null, null, null };
 
    protected   String driverName;
    protected   String DBURL;
    protected   String userName;
    protected   String passWord;
    protected String maxActive;
    protected String maxIdle;
    protected String maxWait;
    protected String initialSize;
    protected String errMsg = "";
    private boolean isAutoCommit=true;
    protected static String  dbType="oracle";
    private String CONFIG_BUNDLE_NAME = "resources/dbconfig.properties";
//    private String CONFIG_BUNDLE_NAME = "resources/jeecg/jeecg_database.properties";
    
    public DBCommon(){
        if((ds == null))
            initDS();
    }
    // 为了兼容  留下此方法
    public DBCommon(boolean b){
        if((ds == null))
            initDS();    
    }
    
    
    
    
    private void initDS(){
        //SunLog.i("DBCommonV1.0","DB connection pool init...............");
        Map<String,String> configBundle = PropertiesUtil.getAll(CONFIG_BUNDLE_NAME);
        
        
        
//        driverName = configBundle.get("diver_name");
         driverName = configBundle.get("jdbc.driverClassName.oracle");
        DBURL = configBundle.get("jdbc.url.jeecg");
        userName = configBundle.get("jdbc.username.jeecg");
        passWord = configBundle.get("jdbc.password.jeecg");
        maxActive = configBundle.get("maxActive");
        maxIdle = configBundle.get("maxIdle");
        dbType  = configBundle.get("jdbc.dbType");
        maxActive=maxActive==null?"100":maxActive;
        maxIdle=maxIdle==null?"50":maxIdle;
        maxWait=configBundle.get("maxWait");
        maxWait=maxWait==null?"1000":maxWait;
        initialSize=configBundle.get("initialSize");
        initialSize=initialSize==null?"50":initialSize;
        
        String minIdle=configBundle.get("initialSize");
        minIdle=minIdle==null?"30":minIdle;
        
        ds=new BasicDataSource();
        ds.setDriverClassName(driverName);
        ds.setPassword(passWord);
        ds.setUsername(userName);
        ds.setUrl(DBURL);
        ds.setMaxActive(Common.parseInt(maxActive)); //最大活跃连接  
        ds.setMaxIdle(Common.parseInt(maxIdle));   //最大空闲连接连接  
        ds.setMinIdle(Common.parseInt(minIdle)); //最小空闲连接连接  
        ds.setInitialSize(Common.parseInt(initialSize)); //连接池初始化大小,初始化10个数据库连接  
        ds.setMaxWait(Common.parseLong(maxWait)); //3秒超时  
        ds.setTestOnBorrow(true);
        ds.setTestOnReturn(true);
        ds.setValidationQuery("SELECT 1 FROM DUAL  ");
        ds.setTestWhileIdle(true);
        SunLog.i(getVer(),"DBtype:"+dbType+";DBURL:"+DBURL+";username:"+userName+";pw:acdefg"+passWord+"lidkasl;maxActive:"+ds.getMaxActive()+";minIdle:"+ds.getMinIdle()+";maxIdle:"+ds.getMaxIdle()+";maxWait:"+ds.getMaxWait()+";InitialSize:"+ds.getInitialSize()+";defaultAutoCommit:"+ds.getDefaultAutoCommit()+";removeAbandoned:"+ds.getRemoveAbandoned()+";removeAbandonedTimeout:"+ds.getRemoveAbandonedTimeout());
    }
    
    

    
    public DataSource getDataSource(){
        if(ds==null) initDS();
        return ds;    
    }

    public boolean isConnected(){
        return connected;
    }

    public Connection getConn(){
        try{
            if (conn != null && conn.isClosed())
                connected = false;
        }catch (SQLException ex){
            SunLog.e("DB连接异常", ex.toString());
        }
        if (!dbConnect())
            return null;
        return conn;
    }

    public DatabaseMetaData getDBMetaData(){
        if (!dbConnect())
            return null;
        return DBMetaData;
    }

    
 
    /*
     * protected void finalize() { closedbConnect(); }
     */

    // 获得一个Connection 对象--获得数据库连接。
    public boolean dbConnect(){
        try {
            if (!connected||conn==null||conn.isClosed())
                try{
                    if(ds==null) initDS();
                    conn=ds.getConnection();
                    DBMetaData = conn.getMetaData();
                }catch (Exception e){
                    errMsg = "连接conn1:" + e.getMessage();
                    e.printStackTrace();
                    connected=false;
                    return false;
                }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        connected = true;
        return true;
    }

    // --释放数据库连接,关闭Connection对象
    public void closedbConnect(){
        if (connected)
            try{
                errMsg = "";
                conn.close();
            }catch (Exception e){
                errMsg = "连接关闭异常:" + e.getMes
很抱歉,作为AI语言模型,我无法提供代码实现截图和页面实际效果截图。但是,我可以为您提供文字描述,帮助您了解基于jstl的图书查询实现的大致流程。 1. BookController: 它是一个基于Spring MVC框架的控制器,用于处理与图书查询相关的HTTP请求。在该控制器中,我们定义了一个处理查询请求的方法,它使用@RequestMapping注解进行映射。在这个方法中,我们首先获取请求参数,然后调用BookService中定义的查询方法来获取图书信息。最后,将查询结果存储在模型中,并将视图名称返回给DispatcherServlet。 2. BookService: 它是一个服务层,用于实现与图书查询相关的业务逻辑。在该服务层中,我们定义了一个查询方法,它接受一个查询关键字作为参数,并返回一个包含图书信息的List对象。在查询方法中,我们使用DbCommon模块中的通用DAO来执行SQL查询,并将结果转换为Book对象的List。 3. Book: 它是一个简单的JavaBean,用于封装图书信息。它包含了一些基本属性,如书名、作者、出版社等。 4. ser_execute.jsp: 它是一个JSP页面,用于展示查询结果。在该页面中,我们使用JSTL标签库来遍历查询结果,并以表格的形式将其展示出来。 总体流程如下: 1. 用户在页面中输入查询关键字,提交查询请求 2. BookController接受HTTP请求,并从请求参数中获取查询关键字 3. BookController调用BookService中的查询方法,并将查询结果存储在模型中 4. DispatcherServlet将模型传递给ser_execute.jsp视图进行展示 5. ser_execute.jsp使用JSTL标签库遍历查询结果,并以表格的形式将其展示出来 希望这些文字描述对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值