首先,在獲取數(shù)據(jù)庫連接中,有可能會(huì)遇見許許多許多的問題,比如在主要的三個(gè)要素中出現(xiàn)了錯(cuò)誤就會(huì)導(dǎo)致,連接不上數(shù)據(jù)庫的問題。
創(chuàng)新互聯(lián)主要從事網(wǎng)頁設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、成都響應(yīng)式網(wǎng)站建設(shè)公司、程序開發(fā)、網(wǎng)站優(yōu)化、微網(wǎng)站、微信小程序定制開發(fā)等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們?cè)诨ヂ?lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了豐富的網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷經(jīng)驗(yàn),集策劃、開發(fā)、設(shè)計(jì)、營(yíng)銷、管理等多方位專業(yè)化運(yùn)作于一體。package com.jdbc;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.SQLException;
import java.util.Properties;
public class JDBCDemo {public static void main(String[] args) throws SQLException {Driver driver = new com.mysql.jdbc.Driver();
String url = "jdbc:mysql://localhost:3306/";
Properties info = new Properties();
info.setProperty("user","root");
info.setProperty("Password","root");
//明顯password是需要全小寫的,寫了大寫開頭就會(huì)出現(xiàn)錯(cuò)誤
//還有像url也很容易因?yàn)橐恍┦韬鰧?dǎo)致出現(xiàn)問題,一旦寫錯(cuò),就會(huì)連不上
Connection conn = driver.connect(url,info);
System.out.println(conn);
}
}
這種方法不是很好,應(yīng)為它出現(xiàn)了第三方的API,這樣不好。應(yīng)該采用下面的方法來獲取連接。
public void testConnection5() throws Exception {//1.加載配置文件
InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties pros = new Properties();
pros.load(is);
//2.讀取配置信息
String user = pros.getProperty("user");
String password = pros.getProperty("password");
String url = pros.getProperty("url");
String driverClass = pros.getProperty("driverClass");
//3.加載驅(qū)動(dòng)
Class.forName(driverClass);
//4.獲取連接
Connection conn = DriverManager.getConnection(url,user,password);
System.out.println(conn);
}
一般的,配置文件聲明在工程的src目錄下,起名為:jdbc.properties
user=root
password=root
url=jdbc:mysql://localhost:3306/test
driverClass=com.mysql.jdbc.Driver
需要注意的是,user和“=”中間不能有空格,會(huì)引發(fā)歧義。
還有的時(shí)候會(huì)出現(xiàn)連接了數(shù)據(jù)庫,進(jìn)行了操作,然后發(fā)現(xiàn)插入數(shù)據(jù)庫的數(shù)據(jù)有問題,顯示“?”或者亂碼,這可能是JDBC程序與服務(wù)器端的字符集不一致,那么可以通過參數(shù)指定服務(wù)器端的字符集
,在庫名后面加上?useUnicode=true&characterEncoding=utf8設(shè)定字符集為utf8
jdbc:mysql://localhost:3306/庫名?useUnicode=true&characterEncoding=utf8
這樣獲取數(shù)據(jù)庫連接各方面都比較的好。
推薦使用PreparedStatement實(shí)現(xiàn)CRUD(增刪改查)操作。
因?yàn)镾tatement存在拼串操作,繁瑣,而且會(huì)出現(xiàn)sql注入的問題。
而想要解決sql注入問題呢,就要用到PreparedStatement 接口,
PreparedStatement 接口是 Statement 的子接口,它表示一條預(yù)編譯過的 SQL 語句。
PreparedStatement 代碼的可讀性和可維護(hù)性比Statement要好,PreparedStatement 能大可能提高性能,
數(shù)據(jù)庫連接池
JDBC數(shù)據(jù)庫連接池的必要性:
使用開發(fā)基于數(shù)據(jù)庫的web程序時(shí),傳統(tǒng)的模式基本是按以下步驟
1.在主程序(如servlet、beans)中建立數(shù)據(jù)庫連接
2.進(jìn)行sql操作
3.斷開數(shù)據(jù)庫連接
這種模式會(huì)存在下面的問題:
1.普通的JDBC數(shù)據(jù)庫連接使用 DriverManager 來獲取,每次向數(shù)據(jù)庫建立連接的時(shí)候都要將 Connection 加載到內(nèi)存中,然后驗(yàn)證用戶名和密碼(這一過程需要花費(fèi)0.05s~1s的時(shí)間)。需要連接的時(shí)候,就向數(shù)據(jù)庫要求一個(gè),執(zhí)行完成后,再斷開連接。
這樣的方式會(huì)消耗大量的資源和時(shí)間。數(shù)據(jù)庫的連接資源沒有得到很好的重復(fù)利用。如果同時(shí)有幾百人甚至幾千人在線,頻繁的進(jìn)行數(shù)據(jù)庫連接操作將占用很多的系統(tǒng)資源,嚴(yán)重的甚至?xí)斐煞?wù)器的崩潰。
2.對(duì)于每一次數(shù)據(jù)庫連接,使用完后都得斷開。否則,程序出現(xiàn)異常,使得未能關(guān)閉,將會(huì)導(dǎo)致數(shù)據(jù)庫系統(tǒng)中的內(nèi)存泄漏,最終將導(dǎo)致重啟數(shù)據(jù)庫。
3.這種開發(fā)不能控制被創(chuàng)建的連接對(duì)象數(shù),系統(tǒng)資源會(huì)被毫無顧及的分配出去,如過連接過多,也可能導(dǎo)致內(nèi)存泄漏,服務(wù)器崩潰。
數(shù)據(jù)庫連接池就可以一定程度上解決上面的問題。
數(shù)據(jù)庫連接池的基本思想:就是為數(shù)據(jù)庫連接建立一個(gè)“緩沖池”。預(yù)先在緩沖池中放入一定數(shù)量的連接,當(dāng)需要建立數(shù)據(jù)庫連接時(shí),只需從“緩沖池”中取出一個(gè),使用完畢之后再放回去。
數(shù)據(jù)庫連接池負(fù)責(zé)分配、管理和釋放數(shù)據(jù)庫連接,它允許應(yīng)用程序重復(fù)使用一個(gè)現(xiàn)有的數(shù)據(jù)庫連接,而不是重新建立一個(gè)。
數(shù)據(jù)庫連接池在初始化時(shí)將創(chuàng)建一定數(shù)量的數(shù)據(jù)庫連接放到連接池中,這些數(shù)據(jù)庫連接的數(shù)量是由最小數(shù)據(jù)庫連接數(shù)來設(shè)定的。無論這些數(shù)據(jù)庫連接是否被使用,連接池都將一直保證至少擁有這么多的連接數(shù)量。連接池的大數(shù)據(jù)庫連接數(shù)量限定了這個(gè)連接池能占有的大連接數(shù),當(dāng)應(yīng)用程序向連接池請(qǐng)求的連接數(shù)超過大連接數(shù)量時(shí),這些請(qǐng)求將被加入到等待隊(duì)列中。
這樣做的優(yōu)點(diǎn)是:
1.資源重用
2.更快的系統(tǒng)反應(yīng)速度
3.新的資源分配手段
4.統(tǒng)一的連接管理,避免數(shù)據(jù)庫連接泄漏
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)站欄目:JDBC學(xué)習(xí)過程中的問題與數(shù)據(jù)庫連接池-創(chuàng)新互聯(lián)
URL標(biāo)題:http://muchs.cn/article42/ipgec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、網(wǎng)站改版、營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站排名、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容