JDBC基礎l.連接到資料庫的方法
答:1)ODBC(OpenDatabaseConnectivity)
一個以C語言為基礎訪問SQL為基礎資料庫引擎的介面,它提供了一致的介面用於和資料庫溝通以及訪問數據.
2)JDBC
Java版本的ODBC
JDBC基礎2.JDBC應用編程介面
答:JDBC應用編程介面是:
1)標準的數據訪問介面,可以連到不同的資料庫;
2)JAVA編程語言的一組類和介面.
JDBC應用編程介面能夠:
1)連接到資料庫;
2)發SQL查詢字元串到資料庫;
3)處理結果.
JDBC應用編程介面有二個主要的部分:
1)JAVA應用程序開發介面面向JAVA應用程序開發者;
2)JDBC驅動程序開發介面
JDBC基礎3.JDBCDriver
答:1)一大堆實現了JDBC類和介面的類;
2)提供了一個實現java.sql.Driver介面的類.
JDBC基礎4.JDBCDriver的四種類型
答:1)JDBC-ODBC橋
由ODBC驅動提供JDBC訪問
2)本地API
部分Javadriver把JDBC調用轉化成本地的客戶端API
3)JDBC-net
純的Javadriver,將JDBC調用轉入DBMS,與網路協議無關.然後通過伺服器將調用轉為DBMS協議.
4)本地協議
純的javadriver,將JDBC調用直接轉為DBMS使用的網路協議
JDBC基礎5.JDBC開發者介面
答:1)java.sql--java2平台下JDBC的主要功能,標準版(J2SE)
2)javax.sql--java2平台下JDBC增強功能,企業版(J2EE)
JDBC基礎6.使用URL確認資料庫
答:我們使用URL來確定一個資料庫(正確的Driver,正確的主機,正確的協議,正確的協議,正確的用戶名和密碼);
語法:protocol:subprotocol:subname
範例:jdbc:db2:MyTest
jdbc:db2://localhost:6789/MyTest
JDBC基礎7.javax.sql包JDBC2.0的增強功能
答:1)數據源介面;
2)連接池;
3)分散式交易;
4)行集;
JDBC基礎8.創建一個基本的JDBC應用
答:1)步驟一:註冊一個driver;
2)步驟二:建立一個到資料庫的連接;
3)步驟三:創建一個statement;
4)步驟四:執行SQL語句;
5)步驟五:處理結果;
6)步驟六:關閉JDBC對象
JDBC基礎9.註冊一個Driver(步驟一)
答:1)driver被用於連接到資料庫;
2)JDBC應用編程介面使用第一個能成功連接到給定URL的driver;
3)在同一時間可以裝載多個driver
JDBC基礎10.註冊一個driver的方法:
答:1)使用類loader(裝載;實例化;註冊入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)實例化一個Driver
a.Driverdrv=newCOM.cloudscape.core.RmiJdbcDriver();
JDBC基礎
1.建立一個到資料庫的連接(步驟二)
答:DriverManager調用getConnection(urlString)方法,實際上調用的是driver的connect(urlString)方法;
1)當一個driver肯定地對應到一個資料庫URL,DriverManager建立一個連接;
2)當沒有driver匹配,返回null然後下一個driver被檢驗;
3)假如沒有建立連接,拋出一個SQLExcepiton異常
2.經常使用的一些JDBCURL
答:1)JDBC-ODBC:jdbc:odbc: 2)Oracle:jdbc:oracle:oci:@ 3)WeblogicMS-SQL:jdbc:weblogic:mssqlserver4: 4)DB2:jdbc:db2:MyTestorjdbc.db2://localhost:6789/MyTest(需要用戶名和密碼) 3.Driver連接方法 答:1)創建一個到指定Driver實例的直接調用; 2)避免一般訪問的問題 Driverdrv=newCOM.ibm.db2.jdbc.app.DB2Driver(); 4.創建一個Statement(步驟三) 答:1)Statement的三個介面: a.Statement; b.PreparedStatement(繼承自Statement); c.CallableStatement(繼承自PreparedStatement); 2)使用方法Connection.createStatement()得到一個Statement對象 5.PreparedStatement對象 答:1)調用ProparedStatement比statement更為高效; 2)繼承自Statement; 3)語法:PreparedStatementpstm=connection.prepareStatement(sqlString); 6.CallableStatement對象 答:1)通過CallableStatement調用資料庫中的存儲過程; 2)繼承自PreparedStatement; 3)CallableStatementcstm=connection.prepareCall("{callreturn_student[?,?]}"); 7.Statement介面的比較 答:|Statement|PreparedStatement|CallableStatement ------------------------------------------------------------------------------ 寫代碼位置|客戶端|客戶端|伺服器端 ------------------------------------------------------------------------------ 寫代碼位置|客戶端|伺服器端|伺服器端 ------------------------------------------------------------------------------ 編寫代碼技術|Java,SQL操作|Java,SQL操作|資料庫的程序語言,如PL/SQL ------------------------------------------------------------------------------ 可配置性|高|第一次高,以後低|低 ------------------------------------------------------------------------------ 可移植性|高|假設支持PreparedStatement的話高 ------------------------------------------------------------------------------ 傳輸效率|低|第一次低,以後高|高 8.執行SQLStatement(步驟四) 答:通過介面方法將SQL語句傳輸至?認的資料庫連接,返回結果可能是一個數據表,可以通過java.sql.ResultSet訪問. 1)Statement的介面方法: a.executeQuery(sqlString):執行給定的SQL聲明,返回一個結果集(ResultSet)對象; b.executeUpdate(sqlString):執行給定的SQL聲明,可以是INSERT、UPDATE或DELETE聲明,也可以是SQLDDL聲明; c.execute(sqlString):執行給定的SQL聲明. 9.處理結果(步驟五) 答:1)使用結果集(ResultSet)對象的訪問方法獲取數據; a.next():下一個記錄 b.first():第一個記錄 c.last():最后一個記錄 d.previous():上一個記錄 2)通過欄位名或索引取得數據 3)結果集保持了一個指向了當前行的指針,初始化位置為第一個記錄前. 10.關閉JDBC對象(步驟六) 答:1)關閉記錄集; 2)其次關閉聲明; 3)最后關閉連接對象. 11.數據表和類對應的三種關係: 答:1)一個表對應一個類; 2)一個表對應相關類; 3)一個表對應整個類關係層 12.類間關係的幾種表設計: 答:1)多對一, 2)一對一: 3)一對多: 4)多對多: 13.SQL數據類型及其相應的Java數據類型 答:SQL數據類型Java數據類型說明 ------------------------------------------------------------------ INTEGER或者INTint通常是個32位整數 SMALLINTshort通常是個16位整數 NUMBER(m,n)DECIMAL(m,n)Java.sql.Numeric合計位數是m的定點十進位數,小數後面有n位數 DEC(m,n)Java.sql.Numeric合計位數是m的定點十進位數,小數後面有n位數 FLOAT(n)double運算精度為n位二進位數的浮點數 REALfloat通常是32位浮點數 DOUBLEdouble通常是64位浮點數 CHARACTER(n)或CHAR(n)String長度為n的固定長度字元串 VARCHAR(n)String最大長度為n的可變長度字元串 BOOLEANboolean布爾值 DATEJava.sql.Date根據具體設備而實現的日曆日期 TIMEJava.sql.Time根據具體設備而實現的時戳 TIMESTAMPJava.sql.Timestamp根據具體設備而實現的當日日期和時間 BLOBJava.sql.Blob二進位大型對象 CLOBJava.sql.Clob字元大型對象 ARRAYJava.sql.Array JDBC基礎 1.元數據 答:關於數據的信息,例如類型或者容量.通過JDBCAPI可以訪問: 1)資料庫元數據; a.使用connection.getMetadata方法返回DataMetaData引用 b.能夠使用isReadOnly此類方法獲取信息 2)結果集元數據; a.使用ResultSet.getMetadata方法返回ResultSetMetaData引用 b.能夠使用getColumnCount此類方法獲取信息 2.事務處理 答:1)一系列的動作作為一個不可分的操作; 2)JDBCAPI中使用事務處理步驟: a.用false作為參數調用setAutoCommit方法; b.執行一或多個關於資料庫的操作; c.調用commit方法完成改變; d.恢復上次提交后的改變,調用rollback方法. try
Connectioncon=null;
try{con=drv.connect("jdbc:db2:MyTest",newProperties())}
catch(SQLExceptione){}
cstm.setString(1,"8623034");
cstm.registerOutparameter(2,Types.REAL);
cstm.execute();
floatgpa=cstm.getFloat(2);
{
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.併發控制
答:1)設置隔離級別方法:setTransactionIsolation
2)隔離級別靜態變數
a.TRANSACTION_NONE:只讀的數據字典;
b.TRANSACTION_READ_UNCOMMITTED:只讀未提交數據;
c.TRANSACTION_READ_COMMITTED:只讀未提交數據;
d.TRANSACTION_REPEATABLE_READ:重複讀取數據;
e.TRANSACTION_SERIALIZABLE:無論做什麼操作都不許別人動.
3)示例:con.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
4.JDBC2.0應用程序編程介面增強功能
答:1)ResultSet增強:
a.可以回卷;
b.可以修改;
設置示例:Statementstm=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
2)Statement增強了批量修改能力(batchupdates);
3)更高級的數據類型(例:Struct).
5.JDBC2.0標準擴展
答:1)JNDI(JavaNamingandDirectoryInterface):解決離散狀態下Object的查找;
2)連接池:在內存中保存了一個資料庫連接,不需要註冊驅動器,提高性能的重要方法.
JDBC基礎學習筆記總結與討論就到這裡
[火星人 ] JDBC基礎學習筆記總結與討論已經有630次圍觀