jdbc是數(shù)據(jù)庫(kù)中十分重要的一項(xiàng)技術(shù),是我們?cè)谧鲰?xiàng)目最常用的一類接口實(shí)現(xiàn)類,
創(chuàng)新互聯(lián)專注于井岡山網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供井岡山營(yíng)銷型網(wǎng)站建設(shè),井岡山網(wǎng)站制作、井岡山網(wǎng)頁(yè)設(shè)計(jì)、井岡山網(wǎng)站官網(wǎng)定制、小程序定制開(kāi)發(fā)服務(wù),打造井岡山網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供井岡山網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
這里就個(gè)朋友們簡(jiǎn)單詳細(xì)的聊一下。
首先我們應(yīng)該知道什么是jdbc
JDBC(JavaDataBaseConnectivity)java 數(shù)據(jù)庫(kù)連接 , 是 JavaEE 平臺(tái)下的技術(shù)規(guī)范 ,定義了在 Java 語(yǔ)言中連接數(shù)據(jù),執(zhí)行 SQL 語(yǔ)句的標(biāo)準(zhǔn) , 可以為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪問(wèn)。
但想要訪問(wèn)數(shù)據(jù)庫(kù)就必須使用數(shù)據(jù)庫(kù)驅(qū)動(dòng),
那么什么是數(shù)據(jù)庫(kù)驅(qū)動(dòng)呢?
數(shù)據(jù)庫(kù)廠商對(duì) JDBC 規(guī)范的具體實(shí)現(xiàn) ,不同數(shù)據(jù)產(chǎn)品的數(shù)據(jù)庫(kù)驅(qū)動(dòng)名字有差異 ,在程序中需要依賴數(shù)據(jù)庫(kù)驅(qū)動(dòng)來(lái)完成對(duì)數(shù)據(jù)庫(kù)的操作。
我們現(xiàn)在使用的是JDBC3.0 標(biāo)準(zhǔn)
1 Driver 接口
Driver 接口的作用是來(lái)定義數(shù)據(jù)庫(kù)驅(qū)動(dòng)對(duì)象應(yīng)該具備的一些能力。比如與數(shù)據(jù)庫(kù)建立連 接的方法的定義所有支持 java 語(yǔ)言連接的數(shù)據(jù)庫(kù)都實(shí)現(xiàn)了該接口,實(shí)現(xiàn)該接口的類我們稱 之為數(shù)據(jù)庫(kù)驅(qū)動(dòng)類。在程序中要連接數(shù)據(jù)庫(kù),必須先通過(guò) JDK 的反射機(jī)制加載數(shù)據(jù)庫(kù)驅(qū)動(dòng) 類,將其實(shí)例化。不同的數(shù)據(jù)庫(kù)驅(qū)動(dòng)類的類名有區(qū)別。 加載 MySQL 驅(qū)動(dòng):Class.forName("com.mysql.jdbc.Driver"); 加載 Oracle 驅(qū)動(dòng):Class.forName("oracle.jdbc.driver.OracleDriver");
DriverManager 類
DriverManager
通過(guò)實(shí)例化的數(shù)據(jù)庫(kù)驅(qū)動(dòng)對(duì)象,能夠建立應(yīng)用程序與數(shù)據(jù)庫(kù)之間建立連 接。并返回 Connection 接口類型的數(shù)據(jù)庫(kù)連接對(duì)象。
常用方法
?getConnection(StringjdbcUrl,Stringuser,Stringpassword)
該方法通過(guò)訪問(wèn)數(shù)據(jù)庫(kù)的 url、用戶以及密碼,返回對(duì)應(yīng)的數(shù)據(jù)庫(kù)的 Connection 對(duì)象。
JDBCURL
與數(shù)據(jù)庫(kù)連接時(shí),用來(lái)連接到指定數(shù)據(jù)庫(kù)標(biāo)識(shí)符。在 URL 中包括了該數(shù)據(jù)庫(kù)的類型、 地址、端口、庫(kù)名稱等信息。不同品牌數(shù)據(jù)庫(kù)的連接 URL 不同。
Connection 與數(shù)據(jù)庫(kù)的連接(會(huì)話)對(duì)象。我們可以通過(guò)該對(duì)象執(zhí)行 sql 語(yǔ)句并返回結(jié)
果。
連接 MySql 數(shù)據(jù)庫(kù): Connection conn = DriverManager.getConnection("jdbc:mysql://host:port/database", "user", "password"); 連接 Oracle 數(shù)據(jù)庫(kù):
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@host:port:database", "user","password"); 連接 SqlServer 數(shù)據(jù)庫(kù): Connection conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://host:port; DatabaseName=database","user","password");
常用方法
?createStatement():創(chuàng)建向數(shù)據(jù)庫(kù)發(fā)送 sql 的 Statement 接口類型的對(duì)象。
?preparedStatement(sql) :創(chuàng)建向數(shù)據(jù)庫(kù)發(fā)送預(yù)編譯 sql 的 PrepareSatement 接口類型的
對(duì)象。
?prepareCall(sql):創(chuàng)建執(zhí)行存儲(chǔ)過(guò)程的 CallableStatement 接口類型的對(duì)象。
?setAutoCommit(booleanautoCommit):設(shè)置事務(wù)是否自動(dòng)提交。 ?commit() :在鏈接上提交事務(wù)。
?rollback() :在此鏈接上回滾事務(wù)。
Statement 接口
用于執(zhí)行靜態(tài) SQL 語(yǔ)句并返回它所生成結(jié)果的對(duì)象。 由 createStatement 創(chuàng)建,用于發(fā)送簡(jiǎn)單的 SQL 語(yǔ)句(不支持動(dòng)態(tài)綁定)。
常用方法
?execute(String sql):執(zhí)行參數(shù)中的 SQL,返回是否有結(jié)果集。 ?executeQuery(Stringsql):運(yùn)行 select 語(yǔ)句,返回 ResultSet 結(jié)果集。 ?executeUpdate(Stringsql):運(yùn)行 insert/update/delete 操作,返回更新的行數(shù)。
?addBatch(Stringsql) :把多條 sql 語(yǔ)句放到一個(gè)批處理中。 ?executeBatch():向數(shù)據(jù)庫(kù)發(fā)送一批 sql 語(yǔ)句執(zhí)行。
PreparedStatement 接口
繼承自 Statement 接口,由 preparedStatement 創(chuàng)建,用于發(fā)送含有一個(gè)或多個(gè)參數(shù)的 SQL 語(yǔ)句。PreparedStatement 對(duì)象比 Statement 對(duì)象的效率更高,并且可以防止 SQL 注入,所以 我們一般都使用 PreparedStatement。
常用方法
?addBatch()把當(dāng)前 sql 語(yǔ)句加入到一個(gè)批處理中。
?execute() 執(zhí)行當(dāng)前 SQL,返回個(gè) boolean 值
?executeUpdate()運(yùn)行 insert/update/delete 操作,返回更新的行數(shù)。
?executeQuery() 執(zhí)行當(dāng)前的查詢,返回一個(gè)結(jié)果集對(duì)象
?setDate(intparameterIndex,Date x)向當(dāng)前SQL語(yǔ)句中的指定位置綁定一個(gè)java.sql.Date
值。
? setDouble(int parameterIndex, double x)向當(dāng)前 SQL 語(yǔ)句中的指定位置綁定一個(gè) double
值
?setFloat(intparameterIndex,floatx)向當(dāng)前 SQL 語(yǔ)句中的指定位置綁定一個(gè) float 值
?setInt(intparameterIndex,intx)向當(dāng)前 SQL 語(yǔ)句中的指定位置綁定一個(gè) int 值
?setString(intparameterIndex,Stringx)向當(dāng)前 SQL 語(yǔ)句中的指定位置綁定一個(gè) String 值
ResultSet 接口
ResultSet 提供檢索不同類型字段的方法。
常用方法
?getString(intindex)、getString(StringcolumnName) 獲得在數(shù)據(jù)庫(kù)里是 varchar、char 等類型的數(shù)據(jù)對(duì)象。 ?getFloat(intindex)、getFloat(StringcolumnName) 獲得在數(shù)據(jù)庫(kù)里是 Float 類型的數(shù)據(jù)對(duì)象。 ?getDate(intindex)、getDate(StringcolumnName) 獲得在數(shù)據(jù)庫(kù)里是 Date 類型的數(shù)據(jù)。
?getBoolean(intindex)、getBoolean(StringcolumnName) 獲得在數(shù)據(jù)庫(kù)里是 Boolean 類型的數(shù)據(jù)。
?getObject(intindex)、getObject(StringcolumnName) 獲取在數(shù)據(jù)庫(kù)里任意類型的數(shù)據(jù)。
ResultSet 對(duì)結(jié)果集進(jìn)行滾動(dòng)的方法
?next():移動(dòng)到下一行。
?Previous():移動(dòng)到前一行。
?absolute(introw):移動(dòng)到指定行。
?beforeFirst():移動(dòng) resultSet 的最前面。
?afterLast() :移動(dòng)到 resultSet 的最后面。
CallableStatement 接口
繼承自 PreparedStatement 接口,由方法 prepareCall 創(chuàng)建,用于調(diào)用數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程。