JDBC部分總結(一)
JDBC的工作過程
1.載入驅動,建立連線。
2.建立語句物件。
3.執行SQL語句。
4.處理結果集。
5.關閉連線。
驅動類載入方式
Oracle:Class.forName(“oracle.jdbc.OracleDriver”);
Mysql:Class.forName(“com.mysql.jdbc.Driver”);
建立連線
Oracle:Connection con=DriverManager.getConnection(
“jdbc:oracle:thin:@<主機名>:<埠號(預設1521)>:<例項名>”,
”帳號”,
”密碼”);
Mysql:Connection con=DriverManager.getConnection(
“jdbc:mysql://<主機名>:<埠號(預設3306)>/<資料庫名>”,
”帳號”,
”密碼”);
建立語句物件
PrepareStatement ps=con.prepareStatement(sql);
執行Sql查詢語句並回結果集
ResultSet result=ps.executeQuery();
執行Sql插入,更新操作並返回執行後影響的記錄數
Int flag=ps.executeUpdate();
處理結果集
while(result.next()){
result.get...(列名)
}
關閉連線
if(rs!=null){
rs.close();
}
if(statement!=null){
statement.close();
}
if(con!=null){
con.close();
}
連線池
預先建立並封裝一些連線物件並將其快取起來,當需要使用連線物件時可以向連線池“借”一個連線,用完之後將其“歸還”到連線池中。
為什麼用連線池?
每一次資料操作請求都需要建立資料庫連線,開啟連線,存取資料和關閉連線等步驟,而這些步驟耗資源又費時,如果頻繁發生資料庫操作,勢必會使系統性能下降。
示例:查詢職工資訊(EMP表)
首先建立一個db.properties檔案,裡面配置一些資料庫資訊和連線池資訊。
#資料庫驅動
jdbc.driver=com.mysql.jdbc.Driver
#資料庫連線地址
jdbc.url=jdbc:mysql://localhost:3306/test
#資料庫使用者名稱
jdbc.user=root
#資料庫密碼
jdbc.pwd=123456
#初始化連線數
dataSource.initialSize=10
#最大空閒數連線數
dataSource.maxIdle=20
#最小空閒連線數
dataSource.minIdle=5
#最大連線數量
dataSource.maxActive=50
#超時等待時間(單位毫秒)
dataSource.maxWait=1000
建立一個DBUtil類,其中封裝了獲取資料庫連線和關閉資料庫連線
public class DBUtil {
//初始化連線池
private static BasicDataSource basicDataSource=new BasicDataSource();
//初始化properties物件
private static Properties properties=new Properties();
//設定資料庫和連線池變數
private static String driver;
private static String url;
private static String user;
private static String pwd;
private static String initialSize;
private static String maxIdle;
private static String minIdle;
private static String maxActive;
private static String maxWait;
static{
try {
//獲取資料庫連線資訊
properties.load(DBUtil.class.getClassLoader().getResourceAsStream("db.properties"));
driver=properties.getProperty("jdbc.driver");
url=properties.getProperty("jdbc.url");
user=properties.getProperty("jdbc.user");
pwd=properties.getProperty("jdbc.pwd");
//獲取連線池資訊
initialSize=properties.getProperty("dataSource.initialSize");
maxIdle=properties.getProperty("dataSource.maxIdle");
minIdle=properties.getProperty("dataSource.maxIdle");
maxActive=properties.getProperty("dataSource.maxIdle");
maxWait=properties.getProperty("dataSource.maxWait");
//設定連線池
basicDataSource.setDriverClassName(driver);
basicDataSource.setUrl(url);
basicDataSource.setUsername(user);
basicDataSource.setPassword(pwd);
basicDataSource.setInitialSize(Integer.parseInt(initialSize));
basicDataSource.setMinIdle(Integer.parseInt(minIdle));
basicDataSource.setMaxIdle(Integer.parseInt(maxIdle));
basicDataSource.setMaxActive(Integer.parseInt(maxActive));
basicDataSource.setMaxWait(Integer.parseInt(maxWait));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//從連線池獲取連線
public static Connection getConnection() throws SQLException{
Connection con=basicDataSource.getConnection();
return con;
}
//關閉連線
public static void closeConnection(Connection con,Statement statement,ResultSet rs) throws SQLException{
if(rs!=null){
rs.close();
}
if(statement!=null){
statement.close();
}
if(con!=null){
con.close();
}
}
}
接著一個測試類
public class PrintEmp {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//建立連線
Connection con=DBUtil.getConnection();
//建立SQL語句
String sql="select * from emp";
//建立語句物件
PreparedStatement ps=con.prepareStatement(sql);
//執行sql語句
ResultSet rs=ps.executeQuery();
//遍歷結果集
while(rs.next()){
int empno=rs.getInt("empno");
String ename=rs.getString("ename");
double sal=rs.getDouble("sal");
Date date=rs.getDate("hiredate");
System.out.println("empno "+empno+",ename "+ename+",sal "+sal+",date "+date);
}
//關閉資料庫連線
DBUtil.closeConnection(con, ps, rs);
}
}
測試結果
其中需要的jar包地址:
連結: https://pan.baidu.com/s/1jo8O57s0H_MnB_owafMoEQ 密碼: edxe
相關推薦
JDBC部分總結(一)
JDBC的工作過程 1.載入驅動,建立連線。 2.建立語句物件。 3.執行SQL語句。 4.處理結果集。 5.關閉連線。 驅動類載入方式 Or
原生jdbc問題總結(一)
資料庫連線,使用的時候就建立,不使用立即釋放,對資料庫進行頻繁連線開啟和關閉,造成資料庫資源浪費,影響資料庫效能。 將sql語句硬編碼到java程式碼中,如果sql語句修改需要重新編譯java程式碼,不利於系統維護。 向prepareStatement中設定引數,對佔位符
JDBC技術總結(一)
1. JDBC簡介 SUN公司為了簡化、統一對資料庫的操作,定義了一套java操作資料庫的規範,稱之為JDBC,JDBC不能直接操作資料庫,JDBC通過介面載入資料庫的驅動,然後操作資料庫。JDBC:Java Data Base Connectivity,它主要由介面組成。組成JDBC的2個包
初學JDBC的一些總結(一)
1、關於JDBC的的個人理解: JDBC(Java Data Base Connectivity,java 資料庫連線)是用於執行 SQL 語句的 JavaAPI,可以為多種關係型資料庫提供統一的訪問方式,它由一組用 Java 語言編寫的類和介面組成。JDBC 提供了一種基準,據此可以構建更高階的工具和
手機射頻測試分析與總結(一)——GPS部分
剛入行的時候手機還是以2G的feature phone為主,兩三年的時間已經是3G smartphone的天下了。2G就是GSM+EDGE(就不分2.5G或者2.75G了),3G包含CDMA,WCDMA,TD-SCDMA,此外就是BT/FM這樣的標配,目前FM在很多專案
Linux-網絡部分總結(一概念)
cep 超時 數據鏈路 oca 局限 次數 and address int Linux-網絡部分總結(一概念) 計算機網絡 ,通internet鏈接各級用戶。 多種網絡服務為用戶提供不同服務、例如ftp、web、tftp等網絡的搭建由各種網絡拓撲來提高網速,容錯等
java_web項目開發經驗總結(一)
從數據 簡單 處理 開發 事務 傳輸 記錄 承載 基礎上 web項目就像一個動態的記事本,功能很強大,你最初的項目功能調研越給力,項目所能發揮的作用也就越給力。這是因為web網絡的強聯系性,大家都可以通過訪問到自己想要訪問的頁面,頁面裏既可以承載信息,也可以承載做事情的
文檔總結(一)——文檔的概述
理解 需要 軟件需求 是否 研究 strong 開發項目 問題 項目開發 寫完文檔後,本來想寫一篇具體的文檔的總結的,後來看大家都寫的具體文檔總結,於是我就想:我還是寫一些跟大家不一樣的東西吧。 所以,我就說說我對各個文檔的宏觀理解吧。
salesforce零基礎學習(七十二)項目中的零碎知識點小總結(一)
gin 不同 grant dmi ima -m ron 角色 com 項目終於告一段落,雖然比較苦逼,不過也學到了好多知識,總結一下,以後當作參考。 一.visualforce標簽中使用html相關的屬性使用 曾經看文檔沒有看得仔細,導致開發的時候走了一些彎路。還好得到
OpenGL在MFC中的使用總結(一)——基本框架
palette 接受 white 要求 無效 結構 del 一次 是你 項目中要畫3D顯示的模型,於是要用到OpenGL,加上是在MFC中,並且是在MFC中的ActiveX中使用。再並且鑒於他們程序主框架的設定。常規的方法還不一定能實現。所以還是查過不少資料,在此一一總
操作系統基礎知識總結(一)
一個 快速 會有 處理死鎖 b2c fcm 死鎖 空間 存儲系統 1. 進程和線程的區別 進程 進程,即正在運行的程序,程序從硬盤載入到內存就變成進程。進程是資源的擁有者,每個進程都擁有著自己的內存空間與多個線程。 線程 線程是指令的執行者,是計算機執行指令的基本單元,一個
react native 知識點總結(一)
修改 ltp 組件 改變 set 覆蓋 sta 一個 個數 一、關於react native 版本的升級 參照文檔:http://reactnative.cn/docs/0.45/upgrading.html react-native -v
SEO總結(一)
.com http 分享 com ima 技術 wid -1 ges SEO總結(一)
js基本語法總結(一)
向上取整 取余 轉字符串 結果 lin ase 調試 錯誤 進行 1.js簡介 a)js是一種網頁腳本語言,使得瀏覽器可以與網頁互動。 js的一種基於對象和事件驅動,具有安全性能的腳本語言,腳本語言就是在客戶端的瀏覽器就可以互動響應處理程序的語言,而不需要服務器的處理和響應
JSON必知必會學習總結(一)
tor lint 沒有 script app 對數 數據交換格式 object 什麽 七月第一周,從學校畢業回來上班的第一周。離開一段時候後,再次回來重新工作,有了很多新的認識,不再是實習時那麽混混沌沌了。每天我自己該做什麽,怎麽做,做到什麽程度更清晰了。除了要去完成我負責
PHP學習總結(一)
encode 什麽 code 解決 new span att 面向對象 反斜杠 》PHP 面向對象 使用parent訪問父類的構造方法(__construct)時一定要為當前類繼承要訪問的構造方法 類的構造方法(__construct)在實例化時直接被加載,靜態方法
python初步——基礎總結(一)
python 自動化運維一. 第一個HelloWorld 1. 在linux 執行 (python2.7)[[email protected]/* */ ~]# vim test.py #!/usr/bin/env python
Java IO學習總結(一)
file flush writer directory 創建 str java 資源 tab 一、File 類 Java中不管文件還是目錄都可以使用File類操作,File能新建、刪除、重命名文件和目錄,但是不能訪問文件內容本身,訪問文件內容需要使用輸入輸出流。 Fi
mybatis總結(一)
tran default led sqlserver insert cto src 結果集 obj MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優秀持久層框架。MyBatis 消除了幾乎所有的JDBC代碼和參數的手工設置以及結果集的檢索。MyBatis 使用
SSF項目總結(一)
變更 可能 檢測 說服力 結果 項目 總結 實時監控 毫無 作為項目經理,在把握需求變更上需要有高度的敏感,作為一個檢測器,實時監控,項目過程中與客戶方溝通的任何細小的變更,都應該記錄在案,同時 抄送給客戶方,註意這裏抄送給客戶方一定要做,目前項目上吃虧的地方有: 1,有的