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