1. 程式人生 > >【20131018】記錄

【20131018】記錄

一、自我介紹

二、介紹專案

三、技術問題

******************Java常用的框架及各自優缺點

******************JDBC繼承的介面以及其常用的類 

http://wenku.baidu.com/view/cb8eecb065ce0508763213fb.html

JDBC的全稱是Java DataBase Connectivity,是一套面向物件的應用程式介面(API),制定了統一的訪問各種關係資料庫的標準介面,為各個資料庫廠商提供了標準介面的實現。這東西能夠實現軟體的擴平臺性。
JDBC是一種底層API,在訪問資料庫是需要在業務邏輯中直接嵌入SQL語句。
JDBC不能夠直接訪問資料庫,必須依賴資料庫廠商提供的JDBC驅動程式完成以下三步工作1.同資料庫建立連線;2.向資料庫傳送SQL語句;3.處理從資料庫返回的結果。


*JDBC驅動

1.JDBC-ODBC橋連是指通過本地的OBDC Driver連線到RDBMS上。

2.JDBC-Native橋連通過呼叫本地的native程式實現資料庫連線,這種型別的驅動程式把客戶機API上的JDBC呼叫轉為Oracle,Sybase,Informix,DB2或者其它DBMS的呼叫。

3.JDBC網路驅動是一種完全利用Java語言編寫的JDBC驅動。

4.本地協議驅動是一種完全利用Java語言編寫的JDBC驅動,這種型別的驅動程式將JDBC呼叫直接轉換為DBMS所使用的網路協議。


#JDBC中常用介面

-Driver介面

每種資料庫的驅動程式都應該提供一個實現java.sql.Driver介面的類,簡稱Driver類。

載入JDBC-ODBC驅動:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

-DriverManager類

java.sql.DriverManager類負責管理JDBC驅動程式的基本服務,是JDBC的管理層,作用於使用者和驅動程式之間,負責跟蹤可用的驅動程式,並在資料和驅動程式之間建立連線。

(靜態方法)getConnection(String url,String user,String password)用來建立資料庫連線。

setLoginTimeout(int seconds)用來設定每次連線資料庫的最長時間

println(String message)用來輸出指定訊息到當前的JDBC日記流

-Connection介面

java.sql.Connection介面代表與特定資料庫的連線,在接連的上下文中可以執行SQL語句並返回結果,還可以通過getMetaData()方法獲得由資料庫提供的相關資訊。

createStatement()建立並返回一個Statement 例項,通常在執行無引數的SQL語句是建立例項。

-Statement介面

java.sql.Statement介面用來執行靜態SQL語句,並返回執行結果。

對於INSERT,IPDATE和DELETE語句,呼叫executeUpdate(String sql)方法;對於SELECT語句,則呼叫executeQuery(String sql)方法,並返回一個永遠不能為null的ResultSet例項。

-PreparedStatement介面

java.sql.PreparedStatement介面繼承並擴充套件了Statement介面,用來執行動態的SQL語句,即包含引數的SQL語句。

通過setXxx()方法為SQL語句中的引數賦值時,建議利用與引數型別匹配的方法,也可以利用setObject()為各種型別賦值。

PreparedStetement ps=connection.preparedStatement("select * from table_name where id>? and (name=? or name=?)");

ps.setInt(1,6);

ps.setString(2,"馬先生");

ps.setObject(3,"李先生");

ResultSet rs=ps.executeQuery();

clearParameters()清除當前引數的值。

-CallableStatement介面

java.sql.CallableStatement介面繼承並擴充套件PreparedStatement介面,用來執行SQL的儲存過程。

-ResultSet介面

java.sql.ResultSet介面類似於一個數據表,通過該介面的例項可以獲得檢索結果集,以及對應資料表的相關資訊,ResultSet例項通過執行查詢資料庫的語句生成。

next()方法可以將指標移動到下一行,返回bool型別。只能迭代一次!

getXxx()方法均有兩個過載方法,分別根據列的索引號和列的名稱檢索列值。

first(),返回bool值

last(),返回bool值

previous()將指標移動到上一行,返回bool值

beforeFirst()

afterLast()

absolute()移動到指定行,int>0向下移動,int<0,向後移動

relative()相對當前位置移動到指定行,int>0向下移動,int<0,向後移動

getRow()當前行索引編號

findColumn()檢視指定列名的索引編號

isBeforeFirst()檢視指標是否處於例項開頭,返回bool

isFirst()檢視指標是否處於第一行,返回bool

deleteRow()刪除當前行,執行該方法後,在執行close()之後才會同步到資料庫

 

 

******************JDBC如何管理事務:

 

 通俗的說,事務(Transaction)就是對資料執行的一組操作,這些操作鈄資料從一種狀態更改為另一種狀態,他們必須為一個單元執行。
    事務最主要的功能就是確保多個連續的操作必須全部執行成功,否則回覆到未執行任何資料操作的最初狀態。也就是說事務的結果只有兩種狀況:事務完成(Transactioncommit)
                       事務失敗(Transaction abort)
當事務失敗或異常中斷時,事務就會回滾(Transacton
roolback),回覆至資料的初始狀態。
 
    start
A,B賬戶存在,
A要轉賬1000元
A賬戶扣除1000元
B賬戶增加1000元
end

    start
setAutoCommit(false)
Insert,delete,update
data on database    ---------------------->rollback
                          SQL Exception  
    commit    ------------------------->rollback
                    SQL Exception 
     end
Auto Commit 設定為false.JDBC中,事務操作預設是自動提交,也就是說一條資料操作就是一項事務,操作成功則commit,失敗則rollback
 可以將多個數據庫操作作為一個事務,操作完成後手動呼叫commit方法來進行整體提交;倘若其中一個操作打敗,則都不會執行到commit(),且將產生異常,此時就可以在異常捕獲時呼叫rollback()進行回滾。這樣就保證了多個數據操作的原子性。
與事務處理相關的方法都在Connection類中:
void  setAutoCommit(boolean auto Commit)
boolean getAutoCommit()
void  commit()
void  rollback()

四、對公司瞭解,為什麼選擇這家公司