1. 程式人生 > >使用連線池連線資料庫

使用連線池連線資料庫

連線資料庫的步驟

我在網上看到的一個教程,感覺那個老師總結的特別好,他是引用<紅樓夢>中的人物,將連線資料庫的步驟進行了總結。
“賈璉欲執事”
賈:載入註冊驅動。
璉:連線資料庫
欲:獲取預編譯語句物件
執:執行預編譯語句
事:釋放資源

匯入jar包

在這裡插入圖片描述
紅線標註的就是匯入的jar包,jar包可以直接去官網下載,下載完之後,直接複製到web-inf下的lib下就行。commons-pool-1.6.jar是連線池的jar包。

新學者可以先不用連線池

(這是註冊使用者時用到的程式碼,主要是sql語句不一樣,就可以實現不同的功能)

//1.載入註冊驅動
        		Class.forName("com.mysql.jdbc.Driver");
        		//2.連線資料庫 建立連線
        		//url:  jdbc:mysql://主機地址:埠號/資料庫
        		//user:資料庫的使用者名稱
        		//pwd:密碼
        		Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/user","root","123456");
        		//3.建立sql語句
        		String sql = "insert into user(Name,Password)values('"+user+"','"+pwd+"')";
        		//4.建立一個statement物件
        		Statement st = conn.createStatement();
        		//5.執行插入sql
        		int rs = st.executeUpdate(sql);
        		System.out.println(rs);
        		//6.關閉連線 釋放資源
        		st.close();
        		conn.close();

使用連線池,使用配置檔案連線資料庫

為什麼使用配置檔案?
其實這裡也用到了封裝的思想,就是減少程式碼的耦合性。使用配置檔案的好處:舉個例子,當你在北京的一個公司上班,你把一個專案買到了新疆(意思就是很遠的地方)。由於買方需要重新建立資料庫,或者用自己公司的資料庫,那麼資料庫名,密碼什麼的也就不一樣了。如果買方懂程式設計還好,你可以告訴他改那一包下面的程式碼。但是,在公司的忌諱是嚴禁看原始碼的,這裡涉及到智慧財產權的問題。所以就假設買方不懂原始碼。假設能看你的原始碼,你也不能讓它改啊,因為他根本看不懂,再改到其他地方,那你的程式碼離崩潰也不遠。這裡就配置檔案就解決了這個尷尬的問題。
在src下右鍵new->folder(相當於資料夾)把資料庫配置問件放在下面。因為以後如果開發大型專案,不可能只有一個配置檔案,這是便於管理配置檔案。

在這裡插入圖片描述
這裡我用的是db.properties,字尾是properties就是配置檔案。配置檔案的底層用的也是hashmap就是一個key,一個value。

對創鍵好的配置檔案進行設定

#key=values格式
#連線資料庫的四要素
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbcdemo(資料庫名稱)
username=root(資料名)
password=123456(密碼)

讀取配置檔案裡的內容,獲取連線物件,關閉連線

一般載入註冊驅動只需要載入註冊一次就行了,這樣我們就想到靜態程式碼塊。只需要在程式啟動是載入一次就行了。讀取配置檔案中的內容,我們想到了反射,只需要一個全限定名稱就可以獲取配置檔案類,獲取到裡面的欄位屬性和方法。

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;

public class DBUtil {
	private static Properties p = new Properties();//獲取配置檔案物件
	private static DataSource ds = null;//資料來源物件為null
	// 1.載入註冊驅動
	static {
		// 獲取配置檔案,轉換成一個輸入流
		try {
			p.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties"));//從配置檔案中讀取配置資訊
			// 獲取資料來源物件
			ds = BasicDataSourceFactory.createDataSource(p);//這是從連線池中獲取連線物件    
		} catch (Exception e) {    
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	// 2.獲取連線物件
	public static Connection getConn() {
		Connection conn = null;
		try {
			conn = ds.getConnection();//獲取連線物件
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conn;//返回連線物件
	}

	// 3.關閉連線
	public static void clossAll(Connection conn, Statement st, ResultSet rs) {
   //關閉連線遵循先開的最後關閉,不過關之前先看看是否為null,如果為null,就不需要關閉
		try {
			if (rs != null) {
				rs.close();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				if (st != null) {
					st.close();
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} finally {
				try {
					if (conn != null) {
						conn.close();
					}
				} catch (Exception e2) {
					// TODO: handle exception
				}
			}
		}
	}
}

總結

為什麼使用連線池?使用連線池的好處?
直接舉個例子,如果你的家在河的一邊,你的外婆家在河的另一邊。假設沒有交通工具可以過河,你只能通過架設一個橋來到你的外婆家去。沒使用連線池之前,相當於每連線一個數據庫你就架設了一個橋,當你到達河的對面,也就是對資料庫的操作(增,刪,查,改操作),你關閉資料庫連線就相當於把橋銷燬了。當你再次過河時還要重新架橋。這樣就大大增加了cpu的工作量,效率會大大降低。所以,連線池就應運而生。連線池主要思路是,先給你建好幾個連線物件,當你使用完畢,它沒有銷燬,只是返回給連線池,讓你下次方便使用。所以這裡使用連線池,可以大大增加效率。

相關推薦

JDBC資料庫連線連線資料庫資料庫操作DAO層設計通用更新及查詢方法(二)

上篇文章主要介紹了通過資料庫連線池連線資料庫,然後設計了對資料庫通用更新和查詢方法,本篇文章主要通過例項介紹上篇文章定義的對資料庫操作的幾個方法的使用:     首先我們先在資料庫建立一個學生資訊表Student欄位如圖: 建立好表將配置檔案的資訊改好然後需要建立一

JDBC資料庫連線連線資料庫資料庫操作DAO層設計通用更新及查詢方法(一)

該篇文章介紹了資料庫連線池獲取資料庫連線以及資料庫操作的基本使用,然後主要提供了java專案案例中dao層的一種設計,利用反射的原理定義了通用的查詢方法可以對應所有的表和例項。文章中的每段程式碼都提供了詳細的註釋及邏輯步驟 首先匯入資料庫連線的所需要的jar包:    

【Java】Spring和Tomcat自帶的連線實現資料庫操作

@[toc] 前言 前面我們已經用Spring和傳統的Jdbc實現資料庫操作、Spring和JdbcTemplate實現資料庫操作。但是這些都是基於直連的資料來源進行的,現在我們將介紹基於連線池的資料來源進行資料庫操作。前面幾個步驟都相同。 建立資料庫 首先建立我們的資料庫(這裡我使用的是Mysql)

c3p0連線操作資料庫亂碼

今天使用c3p0 xml 配置檔案操作資料庫一直出現中文亂碼  在網上找了好久 終於找到了解決辦法 如果你的程式執行沒有問題 只是出現亂碼的情況  那麼只要在 這個後面加上 &amp;useUnicode=true&amp;characterEncodin

資料庫連線失效導致程式異常怎麼辦—-mybatis資料庫連線配置” 資料庫連線失效導致程式異常怎麼辦—-mybatis資料庫連線配置

以mysql為例,資料庫連線預設是8小時,也就是說一個連線8小時未使用,就將被關閉,但是如果你使用了資料庫連線池技術,當連線被關閉之後,程式並不知道這是一個失效的連線,依然進行使用,就會導致程式出錯。怎麼辦呢? 1.修改mysql的預設時間,可以最大改為一年。(但是

連線資料庫(java驅動連線連線連線

使用java驅動連線資料庫:        String url ="jdbc:mysql://localhost:3306/zhongruan";        String usernam

Java Web開發7___通過資料庫連線連線MySQL 資料庫

本博文 給出一個使用資料庫連線池的例子, 將使用webdb 資料來源 獲取一個MySQL 資料庫連線,並查詢其中的t_dirctionary表, 最後將查詢結果顯示在客戶端瀏覽器。 以下ViewDictionary 類 演示了怎麼樣 使用資料庫連線池獲取資料庫連線, 程式碼如下: i

springboot整合druid連線資料庫密碼加密)

<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.20</version

tomcat 配置 quercus記錄:php使用連線訪問資料庫

JNDI (Java Naming and Directory Interface)是SUN公司提供的一種標準的Java命名系統介面,JNDI提供統一的客戶端API,通過不同的訪問提供者介面JNDI SPI的實現,由管理者將JNDI API對映為特定的命名服務和目錄系統,使得Java應用程式可以和這些命

通過jdbc建立連線連線資料庫

一、匯入相關jar包 ojdbc14.jar(Oracle用的) 或 mysql-connector-java-5.1.17.jar(mysql用的)、jsonplugin-0.34.jar(業務中封裝資料用到,可生成json格式的資料)、commons-pool-1.5.

使用連線連線資料庫

連線資料庫的步驟 我在網上看到的一個教程,感覺那個老師總結的特別好,他是引用<紅樓夢>中的人物,將連線資料庫的步驟進行了總結。 “賈璉欲執事” 賈:載入註冊驅動。 璉:連線資料庫 欲:獲取預編譯語句物件 執:執行預編譯語句 事:釋放資源 匯入jar包

使用JDBC連線Oracle資料庫和使用連線連線Oracle資料庫的程式碼解析

這裡連線的是oracle資料庫。 JDBC是什麼:JDBC是java資料庫連線技術的簡稱,提供連線各種常用資料庫的能力。 客戶端傳送請求給應用伺服器,應用伺服器通過JDBC連線到資料庫伺服器,查詢資料庫中的資料,返回一個結果集,再把結果集轉換成實體類傳遞給客戶端。 JDBC

使用資料庫連線連線資料庫

資料庫連線池是什麼? 資料庫連線池(Connection pooling)是程式啟動時建立足夠的資料庫連線,並將這些連線組成一個連線池,由程式動態地對池中的連線進行申請,使用,釋放。 在對資料庫進行操

連線連線kerberos許可權認證的impala+kudu資料庫

啥都不說,先吐槽,吐槽技術中心,吐槽部門,能不能讓我安安全全的使用,不要扔個個東西來就讓我用,在開發環境沒有kerberos,來了上正式,直接給布上,你讓我這連kerberos都不知道是啥的java開發人員咋搞,完,寫一下自己通過連線池連線存在kerberos認證的impal

使用jsp的JSTL標準標籤配合資料庫連線資料庫進行互動

前言 昨天因為有事情,沒有時間來做實驗。今天接著前面的來做了一下,前面已經完成了資料庫與開發環境的連線配置。今天要做的就是寫一個簡單的demo來通過網頁操作資料庫裡面的資源。幾個互動的網頁那當然是一下子就寫完了,程式碼將會在下面給出。在這次的小實驗當中,最令我困惑的就是如何

利用C3P0連線連線mysql資料庫,超過幾小時後連線報wait_timeout錯誤

之前做了一個小專案,用的是C3P0連線池連線mysql資料庫,由於連線數目較小,隔天再連線發現報如下異常錯誤,然後重新重新整理後又正常: 之後檢視資料後發現是因為 :MySQL 的預設設定下,當一個連線的空閒時間超過8小時後,MySQL 就會斷開該連線,而 c3p0 連線

基於express框架下Node.js+MySQL連線資料庫增添操作

題記: 這幾天一直在學習Node以及關係型資料庫的知識,剛剛接觸到了express框架,就想利用express框架,實現一個通過ajax操作來向資料庫內增添資料的功能。 正文: 話不多說,現在我們就來一起看看吧!我們需要了解哪些知識,做哪些基本工作!

Mybatis 搭配 阿里druid連線 連線 oracle 或 mysql

DRUID介紹     DRUID是阿里巴巴開源平臺上一個資料庫連線池實現,它結合了C3P0、DBCP、PROXOOL等DB池的優點,同時加入了日誌監控,可以很好的監控DB池連線和SQL的執行情況,可以說是針對監控而生的DB連線池(據說是目前最好的連線池,不知道速

Nodejs:連線連線mysql

OptPool.js var mysql = require("mysql");//呼叫mysql模組 function OptPool() { this.flag = true;//是否連線過 this.pool = mysql.createPool({

Java中使用Redis(jedis連線連線redis/spring整合redis)

開始在 Java 中使用 Redis 前, 我們需要確保已經安裝了 redis 服務及 Java redis 驅動1、下載最新驅動包:https://mvnrepository.com/artifact/redis.clients/jedis;jedis-2.9.0.jar;