qq_36119647
qq_36119647
采纳率0%
2017-04-09 19:55

使用连接池时无法初始化,也不报错不知到哪出了问题

package com.server;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.util.Properties;

import org.apache.commons.dbcp.BasicDataSource;

/**

  • 该类用于管理数据库连接
  • @author adminitartor
    *
    */
    public class DBUtil {
    //数据库连接池
    private static BasicDataSource ds;

    static{
    //初始化静态属性
    //1加载配置文件
    /*
    * java.util.Properties
    * 用来读取.properties文件,并解析其中
    * 每一行内容,然后以key-value的形式保存
    * 在当前实例中。
    */
    Properties prop = new Properties();
    try {
    prop.load(new FileInputStream("config.properties"));
    String className = prop.getProperty("classname");
    String url = prop.getProperty("url");
    String username = prop.getProperty("username");
    String password = prop.getProperty("password");
    int maxActive = Integer.parseInt(prop.getProperty("maxactive"));
    int maxWait = Integer.parseInt(prop.getProperty("maxwait"));
    //初始化连接池
    ds=new BasicDataSource();

        //将JDBC建立连接所需要的信息设置到连接池中
        //Class.forName(...)
        ds.setDriverClassName(className);
    
        //DriverManager.getConnection(...)
        ds.setUrl(url);
        ds.setUsername(username);
        ds.setPassword(password);
    
        //设置连接池最大连接数
        ds.setMaxActive(maxActive);
        //设置最大等待时间
        ds.setMaxWait(maxWait);
    
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }catch(Exception e){
        e.printStackTrace();
    }finally {
        System.out.println(123);
    }
    
    //2根据配置文件初始化
    

    }
    /**

    • 获取数据库连接
    • @return / public static Connection getConnection() throws Exception{ /
      • 连接池提供的方法:
      • Connection getConnection()
      • 该方法可以返回一个连接池中可用连接。
      • 这是一个阻塞方法,当连接池中有空闲连接
      • 可以使用时会立刻返回,若当前连接池没有
      • 可用连接时,会进入阻塞,阻塞时间由创建
      • 连接池时通过setMaxWait设置的时间为准
      • 在等待期间若有空闲连接着立即返回,当
      • 超过最大等待时间仍没有可用连接时,该方
      • 法会抛出超时异常。 / return ds.getConnection(); } /*
    • 关闭给定的连接
    • @param conn / public static void closeConnection(Connection conn){ try { conn.setAutoCommit(true); / * 若该连接是通过连接池获取的,那么调用 * 这个连接的close方法并不是与数据库断开 * 连接了,而仅仅是将该连接还给连接池。 */ conn.close(); } catch (Exception e) { e.printStackTrace(); } } }
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • HackAge4619 写给初学者的几封信 4年前

    你要看它报的是什么错!

    点赞 评论 复制链接分享

相关推荐