一、jdbc原理
二、statement
execute(sql); 當不知道執行的sql語句是什麼型別的時候執行 ,返回值是boolean
executequery(sql); 執行查詢語句
executeupdate(sql); 執行更新語句
三、preparedstatement
可以使用引數替代sql語句中的某些引數使用 "?"代替,他先將帶引數的sql語句傳送到資料庫,進行編譯,然後preparedstatement會將引數傳送給資料庫。
在使用preparedstatement時,在設定相應引數時,要指明引數的位置和型別,以及給出引數值
根據不同的引數型別使用不同的set***(引數的位置,引數值)來設定引數
例:public void insert(student s) catch (sqlexception e) finally catch (sqlexception e)
if(con!=null)
try catch (sqlexception e) }}
callablestatement是可以用非sql語句來訪問資料庫,他是通過呼叫儲存過程(pl/sql)來訪問資料庫的。可以直接使用連線來呼叫 preparecall(...)方法,來執行這個儲存過程,"..."是儲存過程的名字。
對於系統時間要去資料庫時間
timestamp 和 date都可以儲存時間
timestamp可以儲存時、分、秒的資料,date只儲存日期年月的資訊。
sqlexception是檢查異常必須處理要麼throws ,要麼try{}catch(){}
geterrorcode()可以獲得錯誤碼,可以對錯誤進行查詢。
四、源資料
jdbc中有兩種源資料,一種是資料庫源資料,另一種是resultset源資料。
源資料就是描述儲存使用者資料的容器的資料結構。
resultset rs=ps.executequery(sql);
resultsetmetadata m=rs.getmetadata();
getcolumncount(),獲得實際列數
getcolumnname(int colnum),獲得指定列的列名
getcolumntype(int colnum),獲得指定列的資料型別
getcolumntypename(int colnum),獲得指定列的資料型別名
//列印結果集
public static void printrs(resultset rs)throws sqlexception
system.out.print(name+"="+value);
}system.out.println();}}
五、資料庫源資料
databasemetadata
geturl(),獲得連線資料庫的url
getdatabaseproductname() 獲得資料庫產品的名稱
getdriverversion() 獲得jdbc驅動程式的string形式的版本號
gettables()獲得資料庫中該使用者的所有表
getusername() 獲得資料庫使用者名稱。
六、事務(transaction)
事務是針對原子操作的,要求原子操作不可再分,要求原子操作必須同時成功同時失敗。
事務是**的原子操作的邊界。
jdbc中使用事務,先要使用連線呼叫setautocommite(false)方法,把自動提交(commit)置為false。開啟事務就要關閉自動提交。不用事務是要把setautocommite(true)
在處理事務時,在傳送sql語句後執行成功並確認時,就在try塊中使用連線呼叫commit()方法來傳送提交資訊,
在傳送sql語句後執行失敗時,會在catch語句塊中使用連線呼叫rollback()方法來傳送回滾資訊,也可以在需要時做回滾操作(主觀原因)。
七、jdbc事務併發產生的問題和事務隔離級別
1,髒讀(dirty read),讀取到了沒有提交的資料。
2,不可重複讀(unprpeatable read),兩次讀取到了不同的資料,就是要保持在同一時間點上兩次讀取到的資料相同,
不能夠使查詢資料時進行改變。
3,幻讀(phantom),在兩次查詢同一時間點資料時,資料數量發生改變,要保持在同一時間點上兩次讀取到的資料相同。
事務隔離級別
transaction_none不使用事務。
transaction_read_uncommitted 可以讀取為提交資料。
transaction_read_committed可以避免髒讀,不能夠讀取沒提交的資料,最常用的隔離級別 大部分資料庫的預設隔離級別
transaction_repeatable_read可以避免髒讀,重複讀取,
transaction_serializable可以避免髒讀,重複讀取和幻讀,(事務序列化)會降低資料庫效率
以上的五個事務隔離級別都是在connection類中定義的靜態常量,使用settransactionisolation(int level) 方法可以設定事務隔離級別。
八,異常的處理
try{}
catch(sqlexception){}
try{}
catch(exception){}
Spring資料輔導(2)
特點 1.預先載入,把物件全部例項化到容器中 2.提供了很多介面 對國際化,事件模型,自動註冊等工具 讓容器對我們的bean物件大小改寫的例子 寫類實現beanpostporcessor介面,有初始化之前和初始化之後兩個方法 是容器提供的介面,對這兩個方法實現我們自己的想法,把容器提供的引數bean...
Spring資料輔導(3)
動態 在測試類中來指定 daoif target new dao daoif prox daoif proxy.newproxyinstance target.getclass getclasslocader 構造乙個物件,三個引數分別是 載入器,介面,做什麼的封裝類 但是我們還自己寫封裝類實現in...
EJB的資料輔導(5)
ejb擴充套件元件 ejb的依賴注入,都是依賴於jndi的。在ejb組建中呼叫其他的ejb元件 可以借助於jndi,查詢到其他ejb元件,也可以借助於業務介面,呼叫ejb例項中的業務方法,也可以同國直接引用其他的需要的ejb元件的業務介面,但是需要使用標註。例 ejb taxrate tr 標註 r...