新聞中心
JDBC基礎(chǔ)l.連接到數(shù)據(jù)庫(kù)的方法

成都創(chuàng)新互聯(lián)公司長(zhǎng)期為近千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為滿洲企業(yè)提供專業(yè)的做網(wǎng)站、成都網(wǎng)站建設(shè),滿洲網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
答:1)ODBC(OpenDatabaseConnectivity)
一個(gè)以C語(yǔ)言為基礎(chǔ)訪問(wèn)SQL為基礎(chǔ)數(shù)據(jù)庫(kù)引擎的接口,它提供了一致的接口用于和數(shù)據(jù)庫(kù)溝通以及訪問(wèn)數(shù)據(jù)。
2)JDBC
Java版本的ODBC
JDBC基礎(chǔ)2.JDBC應(yīng)用編程接口
答:JDBC應(yīng)用編程接口是:
1)標(biāo)準(zhǔn)的數(shù)據(jù)訪問(wèn)接口,可以連到不同的數(shù)據(jù)庫(kù);
2)JAVA編程語(yǔ)言的一組類(lèi)和接口。
JDBC應(yīng)用編程接口能夠:
1)連接到數(shù)據(jù)庫(kù);
2)發(fā)SQL查詢字符串到數(shù)據(jù)庫(kù);
3)處理結(jié)果。
JDBC應(yīng)用編程接口有二個(gè)主要的部分:
1)JAVA應(yīng)用程序開(kāi)發(fā)接口面向JAVA應(yīng)用程序開(kāi)發(fā)者;
2)JDBC驅(qū)動(dòng)程序開(kāi)發(fā)接口
JDBC基礎(chǔ)3.JDBCDriver
答:1)一大堆實(shí)現(xiàn)了JDBC類(lèi)和接口的類(lèi);
2)提供了一個(gè)實(shí)現(xiàn)java.sql.Driver接口的類(lèi)。
JDBC基礎(chǔ)4.JDBCDriver的四種類(lèi)型
答:1)JDBC-ODBC橋
由ODBC驅(qū)動(dòng)提供JDBC訪問(wèn)
2)本地API
部分Javadriver把JDBC調(diào)用轉(zhuǎn)化成本地的客戶端API
3)JDBC-net
純的Javadriver,將JDBC調(diào)用轉(zhuǎn)入DBMS,與網(wǎng)絡(luò)協(xié)議無(wú)關(guān)。然后通過(guò)服務(wù)器將調(diào)用轉(zhuǎn)為DBMS協(xié)議。
4)本地協(xié)議
純的javadriver,將JDBC調(diào)用直接轉(zhuǎn)為DBMS使用的網(wǎng)絡(luò)協(xié)議
JDBC基礎(chǔ)5.JDBC開(kāi)發(fā)者接口
答:1)java.sql--java2平臺(tái)下JDBC的主要功能,標(biāo)準(zhǔn)版(J2SE)
2)javax.sql--java2平臺(tái)下JDBC增強(qiáng)功能,企業(yè)版(J2EE)
JDBC基礎(chǔ)6.使用URL確認(rèn)數(shù)據(jù)庫(kù)
答:我們使用URL來(lái)確定一個(gè)數(shù)據(jù)庫(kù)(正確的Driver,正確的主機(jī),正確的協(xié)議,正確的協(xié)議,正確的用戶名和密碼);
語(yǔ)法:protocol:subprotocol:subname
范例:jdbc:db2:MyTest
jdbc:db2://localhost:6789/MyTest
JDBC基礎(chǔ)7.javax.sql包JDBC2.0的增強(qiáng)功能
答:1)數(shù)據(jù)源接口;
2)連接池;
3)分布式交易;
4)行集;
JDBC基礎(chǔ)8.創(chuàng)建一個(gè)基本的JDBC應(yīng)用
答:1)步驟一:注冊(cè)一個(gè)driver;
2)步驟二:建立一個(gè)到數(shù)據(jù)庫(kù)的連接;
3)步驟三:創(chuàng)建一個(gè)statement;
4)步驟四:執(zhí)行SQL語(yǔ)句;
5)步驟五:處理結(jié)果;
6)步驟六:關(guān)閉JDBC對(duì)象
JDBC基礎(chǔ)9.注冊(cè)一個(gè)Driver(步驟一)
答:1)driver被用于連接到數(shù)據(jù)庫(kù);
2)JDBC應(yīng)用編程接口使用***個(gè)能成功連接到給定URL的driver;
3)在同一時(shí)間可以裝載多個(gè)driver
JDBC基礎(chǔ)10.注冊(cè)一個(gè)driver的方法:
答:1)使用類(lèi)loader(裝載;實(shí)例化;注冊(cè)入DriverManager)
a.Class.forName("Com.ibm.db2.jdbc.app.DB2Driver");
b.Class.forName("Com.ibm.db2.jdbc.net.DB2Driver");
c.Class.forName("Com.microsoft.jdbc.sqlServer.SQLServerDriver);
d.Class.forName("oracl.jdbc.driver.OracleDriver");
e.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
2)實(shí)例化一個(gè)Driver
a.Driverdrv=newCOM.cloudscape.core.RmiJdbcDriver();
JDBC基礎(chǔ)
1.建立一個(gè)到數(shù)據(jù)庫(kù)的連接(步驟二)
答:DriverManager調(diào)用getConnection(urlString)方法,實(shí)際上調(diào)用的是driver的connect(urlString)方法;
1)當(dāng)一個(gè)driver肯定地對(duì)應(yīng)到一個(gè)數(shù)據(jù)庫(kù)URL,DriverManager建立一個(gè)連接;
2)當(dāng)沒(méi)有driver匹配,返回null然后下一個(gè)driver被檢驗(yàn);
3)假如沒(méi)有建立連接,拋出一個(gè)SQLExcepiton異常
2.經(jīng)常使用的一些JDBCURL
答:1)JDBC-ODBC:jdbc:odbc:
2)Oracle:jdbc:oracle:oci:@ orjdbc:oracle:thin:@
3)WeblogicMS-SQL:jdbc:weblogic:mssqlserver4: @ :
4)DB2:jdbc:db2:MyTestorjdbc.db2://localhost:6789/MyTest(需要用戶名和密碼)
3.Driver連接方法
答:1)創(chuàng)建一個(gè)到指定Driver實(shí)例的直接調(diào)用;
2)避免一般訪問(wèn)的問(wèn)題
- Driverdrv=newCOM.ibm.db2.jdbc.app.DB2Driver();
- Connectioncon=null;
- try{con=drv.connect("jdbc:db2:MyTest",newProperties())}
- catch(SQLExceptione){}
4.創(chuàng)建一個(gè)Statement(步驟三)
答:1)Statement的三個(gè)接口:
a.Statement;
b.PreparedStatement(繼承自Statement);
c.CallableStatement(繼承自PreparedStatement);
2)使用方法Connection.createStatement()得到一個(gè)Statement對(duì)象
5.PreparedStatement對(duì)象
答:1)調(diào)用ProparedStatement比statement更為高效;
2)繼承自Statement;
3)語(yǔ)法:PreparedStatementpstm=connection.prepareStatement(sqlString);
6.CallableStatement對(duì)象
答:1)通過(guò)CallableStatement調(diào)用數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程;
2)繼承自PreparedStatement;
3)CallableStatementcstm=connection.prepareCall("{callreturn_student[?,?]}");
- cstm.setString(1,"8623034");
- cstm.registerOutparameter(2,Types.REAL);
- cstm.execute();
- floatgpa=cstm.getFloat(2);
7.Statement接口的比較
答:|Statement|PreparedStatement|CallableStatement
------------------------------------------------------------------------------
寫(xiě)代碼位置|客戶端|客戶端|服務(wù)器端
------------------------------------------------------------------------------
寫(xiě)代碼位置|客戶端|服務(wù)器端|服務(wù)器端
------------------------------------------------------------------------------
編寫(xiě)代碼技術(shù)|Java,SQL操作|Java,SQL操作|數(shù)據(jù)庫(kù)的程序語(yǔ)言,如PL/SQL
------------------------------------------------------------------------------
可配置性|高|***次高,以后低|低
------------------------------------------------------------------------------
可移植性|高|假設(shè)支持PreparedStatement的話高
------------------------------------------------------------------------------
傳輸效率|低|***次低,以后高|高
8.執(zhí)行SQLStatement(步驟四)
答:通過(guò)接口方法將SQL語(yǔ)句傳輸至?認(rèn)的數(shù)據(jù)庫(kù)連接,返回結(jié)果可能是一個(gè)數(shù)據(jù)表,可以通過(guò)java.sql.ResultSet訪問(wèn)。
1)Statement的接口方法:
a.executeQuery(sqlString):執(zhí)行給定的SQL聲明,返回一個(gè)結(jié)果集(ResultSet)對(duì)象;
b.executeUpdate(sqlString):執(zhí)行給定的SQL聲明,可以是INSERT、UPDATE或DELETE聲明,也可以是SQLDDL聲明;
c.execute(sqlString):執(zhí)行給定的SQL聲明。
9.處理結(jié)果(步驟五)
答:1)使用結(jié)果集(ResultSet)對(duì)象的訪問(wèn)方法獲取數(shù)據(jù);
a.next():下一個(gè)記錄
b.first():***個(gè)記錄
c.last():***一個(gè)記錄
d.previous():上一個(gè)記錄
2)通過(guò)字段名或索引取得數(shù)據(jù)
3)結(jié)果集保持了一個(gè)指向了當(dāng)前行的指針,初始化位置為***個(gè)記錄前。
10.關(guān)閉JDBC對(duì)象(步驟六)
答:1)首先關(guān)閉記錄集;
2)其次關(guān)閉聲明;
3)***關(guān)閉連接對(duì)象。
11.數(shù)據(jù)表和類(lèi)對(duì)應(yīng)的三種關(guān)系:
答:1)一個(gè)表對(duì)應(yīng)一個(gè)類(lèi);
2)一個(gè)表對(duì)應(yīng)相關(guān)類(lèi);
3)一個(gè)表對(duì)應(yīng)整個(gè)類(lèi)關(guān)系層
12.類(lèi)間關(guān)系的幾種表設(shè)計(jì):
答:1)多對(duì)一,
2)一對(duì)一:
3)一對(duì)多:
4)多對(duì)多:
13.SQL數(shù)據(jù)類(lèi)型及其相應(yīng)的Java數(shù)據(jù)類(lèi)型
答:SQL數(shù)據(jù)類(lèi)型Java數(shù)據(jù)類(lèi)型說(shuō)明
------------------------------------------------------------------
INTEGER或者INTint通常是個(gè)32位整數(shù)
SMALLINTshort通常是個(gè)16位整數(shù)
NUMBER(m,n)DECIMAL(m,n)Java.sql.Numeric合計(jì)位數(shù)是m的定點(diǎn)十進(jìn)制數(shù),小數(shù)后面有n位數(shù)
DEC(m,n)Java.sql.Numeric合計(jì)位數(shù)是m的定點(diǎn)十進(jìn)制數(shù),小數(shù)后面有n位數(shù)
FLOAT(n)double運(yùn)算精度為n位二進(jìn)制數(shù)的浮點(diǎn)數(shù)
REALfloat通常是32位浮點(diǎn)數(shù)
DOUBLEdouble通常是64位浮點(diǎn)數(shù)
CHARACTER(n)或CHAR(n)String長(zhǎng)度為n的固定長(zhǎng)度字符串
VARCHAR(n)String***長(zhǎng)度為n的可變長(zhǎng)度字符串
BOOLEANboolean布爾值
DATEJava.sql.Date根據(jù)具體設(shè)備而實(shí)現(xiàn)的日歷日期
TIMEJava.sql.Time根據(jù)具體設(shè)備而實(shí)現(xiàn)的時(shí)戳
TIMESTAMPJava.sql.Timestamp根據(jù)具體設(shè)備而實(shí)現(xiàn)的當(dāng)日日期和時(shí)間
BLOBJava.sql.Blob二進(jìn)制大型對(duì)象
CLOBJava.sql.Clob字符大型對(duì)象
ARRAYJava.sql.Array
JDBC基礎(chǔ)
1.元數(shù)據(jù)
答:關(guān)于數(shù)據(jù)的信息,例如類(lèi)型或者容量。通過(guò)JDBCAPI可以訪問(wèn):
1)數(shù)據(jù)庫(kù)元數(shù)據(jù);
a.使用connection.getMetadata方法返回DataMetaData引用
b.能夠使用isReadOnly此類(lèi)方法獲取信息
2)結(jié)果集元數(shù)據(jù);
a.使用ResultSet.getMetadata方法返回ResultSetMetaData引用
b.能夠使用getColumnCount此類(lèi)方法獲取信息
2.事務(wù)處理
答:1)一系列的動(dòng)作作為一個(gè)不可分的操作;
2)JDBCAPI中使用事務(wù)處理步驟:
a.用false作為參數(shù)調(diào)用setAutoCommit方法;
b.執(zhí)行一或多個(gè)關(guān)于數(shù)據(jù)庫(kù)的操作;
c.調(diào)用commit方法完成改變;
d.恢復(fù)上次提交后的改變,調(diào)用rollback方法.
- try
- {
- con.setAutoCommit(false);
- Statementstm=con.createStatement();
- stm.executeUpdate("insertintostudent(name,age,gpa)values('gzhu',30,4.8)");
- stm.commit();
- }
- catch(SQLExceptione)
- {
- try
- {
- con.rollback();
- }
- catch(Exceptione)
- {
- }
- }
3.并發(fā)控制
答:1)設(shè)置隔離級(jí)別方法:setTransactionIsolation
2)隔離級(jí)別靜態(tài)變量
a.TRANSACTION_NONE:只讀的數(shù)據(jù)字典;
b.TRANSACTION_READ_UNCOMMITTED:只讀未提交數(shù)據(jù);
c.TRANSACTION_READ_COMMITTED:只讀未提交數(shù)據(jù);
d.TRANSACTION_REPEATABLE_READ:重復(fù)讀取數(shù)據(jù);
e.TRANSACTION_SERIALIZABLE:無(wú)論做什么操作都不許別人動(dòng)。
3)示例:con.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
4.JDBC2.0應(yīng)用程序編程接口增強(qiáng)功能
答:1)ResultSet增強(qiáng):
a.可以回卷;
b.可以修改;
設(shè)置示例:Statementstm=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
2)Statement增強(qiáng)了批量修改能力(batchupdates);
3)更高級(jí)的數(shù)據(jù)類(lèi)型(例:Struct)。
5.JDBC2.0標(biāo)準(zhǔn)擴(kuò)展
答:1)JNDI(JavaNamingandDirectoryInterface):解決離散狀態(tài)下Object的查找;
2)連接池:在內(nèi)存中保存了一個(gè)數(shù)據(jù)庫(kù)連接,不需要注冊(cè)驅(qū)動(dòng)器,提高性能的重要方法。
JDBC基礎(chǔ)學(xué)習(xí)筆記總結(jié)與討論就到這里
【編輯推薦】
- 使用JDBC的五個(gè)精華功能
- Tomcat5+MySQL JDBC連接池配置
- 在Weblogic中實(shí)現(xiàn)JDBC的功能
- 詳解JDBC與Hibernate區(qū)別
- JDBC連接MySQL數(shù)據(jù)庫(kù)關(guān)鍵四步
- 詳解JDBC驅(qū)動(dòng)的四種類(lèi)型
分享文章:JDBC基礎(chǔ)學(xué)習(xí)筆記總結(jié)與討論
鏈接分享:http://m.fisionsoft.com.cn/article/djicpij.html


咨詢
建站咨詢
