1. 程式人生 > >通過jdbc建立連線池連線資料庫

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

一、匯入相關jar包

ojdbc14.jar(Oracle用的) 或 mysql-connector-java-5.1.17.jar(mysql用的)、jsonplugin-0.34.jar(業務中封裝資料用到,可生成json格式的資料)、commons-pool-1.5.5.jar、commons-dbcp-1.4.jar、額外的幾個jar包:commons-logging-1.1.3.jar、commons-io-2.4.jar、commons-fileupload-1.3.1.jar、log4j-1.2.17.jar

二、資料庫配置檔案 dbconfig.properties

url=jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf-8
driverClassName=com.mysql.jdbc.Driver
username=root
password=dap1234$
#連線池啟動時建立的初始化連線數
initialSize=10
#連線池在同一時間能夠分配的最大活動連線的數量
maxActive=30
#最大空閒連線,超過的將被釋放
maxIdle=10
#最小空閒連線,低於之將建立新的連線
minIdle=5
#當沒有可用連線時,連線池等待連線被歸還的最大時間,超時則拋異常
#(比如debug時佔著連線不放,正常情況下業務處理完後即會釋放當前使用的連線)
maxWait=10000
#用來驗證從連線池中取出的連線
validationQuery=select current_date()
#當下面兩個引數都為true時表示會在每次請求之前和之後進行連線池測試,如果
#連線失效(比如mysql預設8小時後伺服器自動斷開該連線)就會銷燬之並建立一個新的連線物件,
#但此次的資料庫操作也就失敗了,可能會對寫操作有影響
#使用時一定要配置validationQuery引數才有效
testOnBorrow=false
testOnReturn=false
#指明連線是否被空閒連接回收器進行檢驗,如果檢測失效則連線將被從池中去除
testWhileIdle=true
#超過180秒後,是否進行沒用連線(廢棄)的回收(預設為false)
removeAbandoned=true
#超過時間限制,回收沒有用(廢棄)的連線(預設為 300秒)
removeAbandonedTimeout=180
#標記當Statement或連線被洩露時是否列印程式的stack traces日誌
logAbandoned=false
#每過30000毫秒對連線池進行一次檢測,將物件閒置時間超過1800000毫秒的物件進行銷燬,
#並建立新的物件來替代。這樣就能保證時刻都有正常的連線池物件存在
timeBetweenEvictionRunsMillis=300000
#回收執行緒(空閒連接回收器執行緒)執行時檢查的連線數量
numTestsPerEvictionRun=5
#連線在池中保持空閒而不被回收的最小時間值
minEvictableIdelTimeMillis=3600000

三、建立工具類供建立並獲取連線,關閉連線

import java.io.InputStream;
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 BaseDao {

	private static DataSource ds = null;
	static{
		try {
			InputStream is = BaseDao.class.getClassLoader().getResourceAsStream("dbconfig.properties");
			Properties prop = new Properties();
			prop.load(is);
			ds = BasicDataSourceFactory.createDataSource(prop);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	public Connection getConn() throws SQLException{
		return ds.getConnection();
	}

	public void closeAll(Connection conn,Statement state,ResultSet set){
		try {
			if(set!=null){
				set.close();
			}
			if(state!=null){
				state.close();
			}
			if(conn!=null){
				conn.close();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

附上不用連線池單個連線樣例:

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
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 BaseDao {

	/*public static final String DRIVER="oracle.jdbc.driver.OracleDriver";
	public static final String URL="jdbc:oracle:thin:@10.43.139.205:1521:senti";
	public static final String USERNAME="owluser";
	public static final String PWD="owl1qaz";*/

	public static final String DRIVER="com.mysql.jdbc.Driver";
	public static final String URL="jdbc:mysql://10.43.165.151:3306/ontylogy?useUnicode=true&characterEncoding=utf-8";
	public static final String USERNAME="root";
	public static final String PWD="mysql180";

	

	public Connection getConn() throws ClassNotFoundException, SQLException{
		Class.forName(DRIVER);
		Connection conn=DriverManager.getConnection(URL, USERNAME, PWD);
		return conn;		
	}

	public void clossAll(Connection conn,Statement state,ResultSet rs){
		try {
			if(rs!=null){
				rs.close();
			}
			if(state!=null){
				state.close();
			}
			if(conn!=null){
				conn.close();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}	
}

四、服務層建立服務類需要繼承上面的工具類,以便呼叫連線池中的連線,並查詢結果    

Connection conn=null;
		Statement state=null;
		ResultSet rs=null;
		Map<String, Object> map=new HashMap<String, Object>();
		try {
			conn=getConn();
			state=conn.createStatement();
			rs=state.executeQuery(sql);
			if (rs.next()) {
				map.put("pwd", rs.getString("upassword"));
				map.put("right", rs.getInt("uright"));
				//result=JSONUtil.serialize(map);
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			closeAll(conn, state, rs);
		}



相關推薦

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

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

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

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

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

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

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

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

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

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

通過xshell 建立ssh隧道連線資料庫

網路狀況                          一、本機xshell 建立隧道     1、先測試server1 上能Telnet通 server2的23400埠                    2、xhell 新建連線            

【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

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

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

Android通過WebSocket建立一個長連線(帶心跳檢測)從伺服器端接收訊息

   最近公司要做一款內部使用的工具類app,方便銷售部門打電話(其實就是在後臺有好多使用者資料,之前銷售部門同事撥打電話,需要自己從銷售後臺檢視使用者手機號等資訊,然後自己拿自己手機撥號,然後打出去。現在想實現銷售的同事,點選銷售後臺的按鈕,自己的手機直接撥號的功能)。為此

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

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

使用連線連線資料庫

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

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

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

jsp通過jdbc驅動與mysql連線

資料庫的連線終於成功了。主要運用mysql-gui-tools-5.0-r17-win32這個工具,其實主要就是一個mysql-connector-java-5.0.4-bin.jar而已,這個可以單獨下載。 把mysql-connector-java-5.0.4-b

連線連線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操作來向資料庫內增添資料的功能。 正文: 話不多說,現在我們就來一起看看吧!我們需要了解哪些知識,做哪些基本工作!