一讯检、背景介紹
1)概念:
? ? ? ? ?JDBC(Java Data Base Connectivity,數(shù)據(jù)庫(kù)連接)是一種用于執(zhí)行SQL語(yǔ)句的Java API格郁,可以為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪(fǎng)問(wèn)桃笙,它由一組用Java語(yǔ)言編寫(xiě)的類(lèi)和接口組成。JDBC提供了一種基準(zhǔn)煮剧,據(jù)此可以構(gòu)建更高級(jí)的工具和接口阅仔,使數(shù)據(jù)庫(kù)開(kāi)發(fā)人員能夠編寫(xiě)數(shù)據(jù)庫(kù)應(yīng)用程序烂琴。
2)由來(lái):
? ? ? 主流的數(shù)據(jù)有MySQL,oracle,sqlserver等粗仓,他們都有自己的訪(fǎng)問(wèn)協(xié)議嫁怀,Java程序想要跟這些數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)訪(fǎng)問(wèn),每種數(shù)據(jù)庫(kù)的代碼都不通用借浊,這樣不利于代碼的可復(fù)用性塘淑。為此jdk提供了數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)的規(guī)范即JDBC。Jdbc是一種api蚂斤,接口的實(shí)現(xiàn)交由各個(gè)數(shù)據(jù)庫(kù)廠(chǎng)商來(lái)實(shí)現(xiàn)存捺,做成數(shù)據(jù)庫(kù)的驅(qū)動(dòng)。
二曙蒸、知識(shí)剖析
1)jdbc使用步驟
? ? ? 1.加載JDBC驅(qū)動(dòng)
? ? ?2.建立數(shù)據(jù)庫(kù)連接Connection
? ? ?3.創(chuàng)建執(zhí)行SQL語(yǔ)句的statement
? ? ?4.處理執(zhí)行的結(jié)果ResultSet
? ? ?5.釋放資源
2)jdbcTemplate使用步驟
? ?1.注入dataSource
? ?2.啟動(dòng)IOC容器
? ?3.獲取jdbcTemplate實(shí)例
? ?4.調(diào)用方法執(zhí)行SQL語(yǔ)句
? ?5.釋放資源
三捌治、常見(jiàn)問(wèn)題
什么是SQL注入錯(cuò)誤?
用戶(hù)輸入的參數(shù)含有SQL關(guān)鍵字的時(shí)候有可能引起拼接的SQL語(yǔ)句含義發(fā)生
改變,從而執(zhí)行了一些特殊的操作
四纽窟、解決方案
使用PreparedStatement替代Statement
優(yōu)勢(shì):
(1)語(yǔ)法不同:PreparedStatement可以使用預(yù)編譯的sql肖油,而Statment只能使用靜態(tài)的sql
(2)效率不同: PreparedStatement可以使用sql緩存區(qū),效率比Statment高
(3)安全性不同: PreparedStatement可以有效防止sql注入臂港,而Statment不能防止sql注入森枪。
五、編碼實(shí)戰(zhàn)
六审孽、拓展思考
jdbcTemplate是對(duì)jdbc的一種二次封裝县袱,那么在實(shí)際的應(yīng)用中能否具體問(wèn)題具體分析自定義封裝來(lái)提高代碼效率
如果可以從那幾個(gè)方面來(lái)入手?
參考文章:
1.http://www.cnblogs.com/best/p/5638827.html
2.http://www.cnblogs.com/xinye/p/3823461.html
3.http://www.cnblogs.com/caoyc/p/5630622.html