import java.util.ResourceBundle; public class Mtest7Demo { //使用properties配置文件完成数据库的连接 /* * 开发中获得连接的4个参数(驱动,URL,用户名,密码)通常都存在配置文件中,方便后期维护, * 程序如果需要更换数据库,只需要修改配置文件即可。 * (个人认为如果单独的创建一个类,包含上面的四种参数,在性质上并无差别) * 注意点: * 1 文件位置,任意,建议src下; * 2文件名称:任意,扩展名为properties * 3文件内容:一行一组数据,格式是"key=value" */ /* * 加载配置文件:ResourceBundle对象 * ResourceBundle提供getBundle()方法用于只提供properties文件即可, * 之后使用getString(key)通过key获得value的值 */ public static String driver;//驱动 public static String url;//路径 public static String user;//用户名 public static String password;//密码 //配置文件只需要被加载一次。 static {//注意需要放在static中; //通过key获取value的值 ResourceBundle bundle=ResourceBundle.getBundle("db"); driver=bundle.getString("jdbc.driver"); url=bundle.getString("jdbc.url"); user=bundle.getString("jdbc.user"); password=bundle.getString("jdbc.password"); } //如上完成properties文件配置的封装 }
import java.sql.Connection; import java.sql.DriverManager; import java.util.LinkedList; public class Mtest6Demo { static LinkedList<Connection> pool = new LinkedList<Connection>(); //使用连接池完成数据库的连接 //本测试首先是自定义的连接池 //1初始化连接池中的连接 //本部分是连接池的初始化设置 static { Mtest7Demo mt=new Mtest7Demo(); String driver=mt.driver; String url=mt.url; String user=mt.user; String password=mt.password; try { //1注册驱动 Class.forName(driver); for(int i=0;i<5;i++) { //2获得连接 Connection conn = DriverManager.getConnection(url,user,password); //3将连接添加到连接池中 pool.add(conn); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } //获得连接 public static Connection getConnection() { Connection conn=null; try { //1如果池中有连接 if(!pool.isEmpty()) { //2每一个连接Connection,只能提供给当前一个线程使用,必须进行移除操作 conn=pool.remove(0); //3返回刚刚获得的连接 return conn; }else { //如果没有连接,等待100毫秒,然后继续 Thread.sleep(100); return getConnection(); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } return conn; } //归还连接 public static void release(Connection conn) { try { if(conn!=null) { conn.close(); pool.add(conn); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } }
db.propreties文件
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/study?useUnicode=true&characterEncoding=utf8 jdbc.user=root jdbc.password=root