freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

一名java培訓生的學習筆記-資料下載頁

2025-06-23 14:16本頁面
  

【正文】 尤其在做插入和刪除操作時,要進行一組連貫的操作,如果任何一個步驟出現(xiàn)異常,就會有垃圾數(shù)據(jù)的產生,為了避免這種情況的產生我們必須對dao包中類的方法進行完善:解決方案:首先,我們要想使得操作的連貫性,就不能在每個插入操作進行異常的處理,應該將它們相應的方法拋出異常,在bo包中類調用相應的方法時,將它們添加到一個事務中去(事務就是指全部完成或全部放棄的操作),再try—catch。這樣即避免了垃圾數(shù)據(jù)的產生,又實現(xiàn)了代碼的復用。其次,在進行關聯(lián)表操作時,因為存在約束條件,我們需要使用到序列。當我們進行插入操作時,應先查詢主表的序列值,然后用該值去插入,同理從表也應當如此。舉個簡單的例子測試一下:首先我們在數(shù)據(jù)庫中建立關聯(lián)表 CREATE TABLE PK_TABLE( PID NUMBER(6), PNAME VARCHAR2(10) , CONSTRAINT PK_TABLE_PID_PK PRIMARY KEY (PID) ) 建立主表 CREATE SEQUENCE PK_TABLE_SEQ MINVALUE 1 MAXVALUE 9999999999999 START WITH 1 INCREMENT BY 1 CACHE 20 創(chuàng)建主表序列 INSERT INTO PK_TABLE VALUES(,39。PNAME139。) 插入一條數(shù)據(jù) SELECT * FROM PK_TABLE CREATE TABLE FK_TABLE( FID NUMBER(6), PID NUMBER(6), FNAME VARCHAR2(10) , CONSTRAINT PK_TABLE_FID_PK PRIMARY KEY (FID), CONSTRAINT FK_TABLE_PID_FK FOREIGN KEY (PID) REFERENCES PK_TABLE(PID) ) 創(chuàng)建從表 CREATE SEQUENCE FK_TABLE_SEQ MINVALUE 1 MAXVALUE 9999999999999 START WITH 1 INCREMENT BY 1 CACHE 20 創(chuàng)建從表序列 INSERT INTO FK_TABLE VALUES(,1,39。FNAME139。)。 INSERT INTO FK_TABLE VALUES(,1,39。FNAME239。)。 INSERT INTO FK_TABLE VALUES(,1,39。FNAME339。) 。 在從表中插入三條數(shù)據(jù) SELECT * FROM FK_TABLE。 SELECT * FROM PK_TABLE。主表數(shù)據(jù)如上圖從表數(shù)據(jù)如上圖 我們在進行操作時,因為有約束條件,所以在進行插入操作時,應先插入主表中的數(shù)據(jù),再插入從表中的數(shù)據(jù)經(jīng)過改進后dao包中類的方法:public void insert_Pk_Table(int pid,Connection conn) throws Exception{ //插入主表數(shù)據(jù)的方法,該方法將拋出異常 String sql=insert into pk_table values(?,39。vc39。)。 PreparedStatement pstmt=(sql)。 (1,pid)。 ()。 } public void insert_Fk_Table(int fk,int pid,Connection conn) throws Exception{ //插入從表數(shù)據(jù)的方法,該方法將拋出異常 String sql=insert into fk_table values(?,?,39。vc39。)。 PreparedStatement pstmt=(sql)。 (1,fk)。 (2,pid)。 ()。 } public int select_Pk_Seq(Connection conn) throws Exception{ //查詢主表序列的方法select_Pk_Seq,該方法返回主表的序列值 //該方法將拋出異常 int pk=0。 String sql=select as pk from dual。 Statement stmt=()。 ResultSet rs=(sql)。 if(()){ pk=(pk)。 } return pk。 } public int select_Fk_Seq(Connection conn) throws Exception{ //查詢從表序列的方法select_Fk_Seq,該方法返回從表的序列值 //該方法將拋出異常 int fk=0。 String sql=select as fk from dual。 Statement stmt=()。 ResultSet rs=(sql)。 if(()){ fk=(fk)。 } return fk。 }我在bo 包中類進行方法調用時處理它們拋出的異常public void insertAll(){ //創(chuàng)建bo包中的方法insertAll(),該方法對dao包中類的方法進行匯總 //并處理它們拋出的異常 StudentDao st=new StudentDao()。 int pk=0。 int fk=0。 //定義兩個局部變量,分別儲存主表和從表中主鍵值 Connection conn=null。 try{ conn=()。 //連接數(shù)據(jù)庫 (false)。 //取消自動提交 pk=(conn)。 fk=(conn)。 //分別查詢主表和從表中主鍵值,將它們作為參數(shù) //傳遞給insert_Pk_Table,insert_Fk_Table方法 (pk,conn)。 (fk,pk,conn)。 ()。 //如果都插入成功則提交,否則進行異常處理 }catch(Exception e){ try { //只要有一個插入操作失敗,就回滾,避免垃圾數(shù)據(jù)的產生 ()。 } catch (SQLException e1) { // TODO 自動生成 catch 塊 ()。 } ()。 }finally{ try{ (true)。 //設置自動提交 ()。 //關閉數(shù)據(jù)庫連接 }catch(Exception e){ ()。 } } }我們在eclipse中測試:我們分別查詢主表個從表驗證一下:插入成功。 第四章 2007年7月4日 星期三 授課教師: 學生: 第一節(jié) 一個簡單關聯(lián)表項目開發(fā)一、項目介紹1 在數(shù)據(jù)庫中建立表 部門表 部門id pk 部門名稱 主管姓名 員工表 員工id pk 姓名 部門id fk 生日 (date) 工資 要求:主鍵使用序列2 設計一個程序,完成下面功能: 1 增加一個部門,名稱是開發(fā)部,主管姓名是bill。有3名員工,信息如下: 姓名 生日 工資 tom 19801011 5000 harry 1981111 6000 susan 1983111 3000 把上面的數(shù)據(jù)插入數(shù)據(jù)庫 2 查詢下面信息: 員工姓名,所在部門 生日,工資。生日以 yyyy/mm/dd格式顯示 并且在控制臺輸出 3 刪除tom的記錄要求: 類名,方法名稱 ,變量名稱要規(guī)范 不允許有垃圾代碼 代碼要有必要的注釋二、項目分析:問題一:在數(shù)據(jù)庫中建立表建表時候需用到序列,注意創(chuàng)建序列時的語句,以及創(chuàng)建關聯(lián)表的約束條件問題二:增加一個部門,名稱是開發(fā)部,主管姓名是bill。有3名員工,信息如下:完成插入操作時需先插入主表再插從表,因為有約束條件,所以要注意序列如何在java程序中使用,dao包中的類設計以及異常的處理。查詢信息并且在控制臺輸出查詢語句需要兩個表關聯(lián)查詢,注意List和iterator的使用刪除tom的記錄單表刪除操作,直接在dao包中處理即可三、項目設計方案: 按照項目要求分別創(chuàng)建主表和從表,并為它們分別創(chuàng)建序列(1)vo包的設計: Vo類:由于需要輸出員工姓名,所在部門 生日,工資 ,所以在vo包中建立Vo類,其中定義相應的數(shù)據(jù)成員,如果在插入時候用批處理操作,還需建立相應的構造方法,使得初始化Vo對象時更方便,如果使用批處理操作,那么就不用查詢從表的主鍵,而是在插入從表的sql語句中使用序列。并且在vo包中創(chuàng)建從表相應的vo類。優(yōu)點:執(zhí)行效率高,不用再寫查詢從表序列的方法,缺點:代碼稍復雜。出于插入條數(shù)少以及代碼更清晰考慮,不使用批處理插入操作。 (2)conn包的設計:Constant類:出于代碼復用考慮設計此類,儲存各種數(shù)據(jù)庫的驅動程序和數(shù)據(jù)庫連接有關數(shù)據(jù)常量DBConn類:其中設計的lianJie()方法,獲取數(shù)據(jù)庫的連接。(3)dao包的設計: InsertDao類:在該類中分別設計插入主表數(shù)據(jù)和從表數(shù)據(jù)的方法insert_Pk_Table和insert_Fk_Table ,并根據(jù)它們表中的字段設計形式參數(shù),由于進行多表關聯(lián)的插入操作,為保證避免垃圾數(shù)據(jù)的產生,將它們的方法分別拋出異常,最后在bo包中將它們放入同一事務中,并在調用相應的方法時處理該異常。SelectKey類:由于存在約束條件,我們在插入數(shù)據(jù)操作前應該分別查詢它們的序列值,然后將它們作為參數(shù)傳遞給InsertDao類中的方法。該類中包括兩個方法:select_Pk_Seq和select_Fk_Seq它們也分別拋出異常,在bo包中類的方法中處理異常,避免重復代碼的產生。同時也保證了查詢操作和插入操作在同一事務中,使插入操作更嚴謹。 SelectDao類:該類主要完成數(shù)據(jù)的查詢,這里需要進行多表關聯(lián)查詢。將查詢的結果裝入List中,為bo層的輸出提供方法支持。DeleteDao類:該類完成數(shù)據(jù)員工表中刪除一條信息的操作,一種方案是將這個方法放入上面的事務中,使得方法更簡潔,但缺點是不能分步完成插入和刪除操作。由于是對單表進行操作,所以我們這里單獨在該方法內處理異常。(4)bo包的設計:Business類:該類中我們根據(jù)項目要求分別設計三個方法:insert_Q1()該方法完成數(shù)據(jù)插入功能,將dao包中的各個類的方法進行匯總,并處理異常,完成數(shù)據(jù)插入的操作,提供給客戶方便,只需要調用該方法就可以。shuChu_Q2()方法該方法完成查詢并輸出的功能在該方法內調用SelectDao類中的方法,將查詢數(shù)據(jù)庫的結果放入迭代器輸出。delete_Q3()方法將dao包中DeleteDao類的方法傳遞給客戶端。(5)test包Test類:模擬客戶端進行測試用的類,它將作為程序的入口 (6)lib包 四、編寫偽碼,由于程序太長,偽碼的部分見程序注釋五 程序真實碼vo包:Vo類: package vo。public class Vo { //它是一個標準的javabean,定義了私有的成員變量和公有的get、set方法 //由于需要輸出員工姓名,所在部門 生日,工資 //所以在vo包中建立Vo類,其中定義相應的數(shù)據(jù)成員 //如果在插入時候用批處理操作,還需建立相應的構造方法,使得初始化Vo對象時更方便,如果使用批處理操作,那么就不用查詢從表的主鍵,而是在插入從表的sql語句中使用序列,并且在vo包中創(chuàng)建從表相應的vo類。優(yōu)點:執(zhí)行效率高,缺點,代碼稍復雜 //出于插入條數(shù)少以及代碼更清晰考慮,不使用批處理插入操作。 private String name。 private String depart。 private String birthday。 private int salary。 public String getBirthday() { return birthday。 }
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1