云靜心舞
青青孜涇,悠悠我心
這樣的代碼,是我寫的嗎??
???前段時間翻看自己一起做的一個項目的代碼,忽然明白為什么業務邏輯和數據持久層的分離顯的如此重要.
??? public ArrayList getdocumenttypebyauthid1(String documentid){
??? ?/*
??? ? * 作用:找到與該認證類型對應的文件,比較麻煩的是多體系的文件
??? ? * 作者:yunjingxinwu
??? ? * 日期:2006-2-08(修改自上面的版本的函數2-19修改)
??? ? */
??? ?ArrayList list=new ArrayList();
??? ?Connection conn = db.getconn();
??sql="select distinct authenticationstandardid as authenticationstandardid ";
??sql=sql+" from dsm_DocumenttypeAuthStandard where documentid="+documentid+" and flag=1 and documenttypeid=0";
??? ?//查找已經插入dsm_DocumenttypeAuthStandard文件類型為0的認證類型
??? ?//注意文件類型表中的認證類型ID即,isstandard為"0"是為通用的即沒有類型ID,-1為多體系文件,0為通用文件,其他數字為對應的認證類型ID
??//多體系的時候isstandard字段為-1,ismanyauthasd字段為各個認證標準的ID組合如1&2等等。通用和單體系的表示和isstandard一樣
??//組合還需要考慮,可以用一個函數來實現,2006-2-19日實現此函數
??? ?String temp="";//temp臨時變量
??? ?try{
??? ??pstmt=conn.prepareStatement(sql);
??? ??rs=pstmt.executeQuery();
??? ??while(rs.next()){
??? ???temp=rs.getString("authenticationstandardid");
??? ???sql=null;
????pstmt=null;
????ResultSet rs1=null;
????if(temp.indexOf("&")!=-1){//如為多體系標準的表現形式
?????sql="select documenttypeid as documenttypeid,name as name," ;
?????sql=sql+"ismanyauthasd as ismanyauthasd from basedocumenttype" ;
?????sql=sql+" where isstandard=-1 and flag=1";
?????pstmt=conn.prepareStatement(sql);
?????rs1=pstmt.executeQuery();
?????String temp1="";
?????while(rs1.next()){
??????temp1=rs1.getString("ismanyauthasd");//temp1賦值為取出來的多體系標準
??????if(temp1.indexOf("&")!=-1){
???????if(dowithstring(temp,temp1)){//調用一個字符串處理函數dowithstring(String a,String b)
???????//true時候表明temp1包含temp或者temp包含temp1
???????DossierForm dossier=new DossierForm();
???????String[] temp1Array=temp1.split("&");//以&分割temp1
???????String temp3="";
???????for(int i=0;i<temp1Array.length;i++){
????????pstmt=null;
????????sql=null;
????????sql="select name as name from baseauthenticationstandard where authenticationstandardid="+temp1Array[i];
????????ResultSet rs2=null;
????????pstmt=conn.prepareStatement(sql);
????????rs2=pstmt.executeQuery();
????????
????????while(rs2.next()){
?????????if(temp3==""){
??????????temp3=rs2.getString("name");
?????????}else{
??????????temp3+="&"+rs2.getString("name");
?????????}
????????}
???????}
???????dossier.setAuthenticationstandardname(temp3);
???????dossier.setDocumentTypeID(rs1.getString("documenttypeid"));
????????? ????? dossier.setDocumentTypeName(rs1.getString("name"));
????????? ????? list.add(dossier);
????????? ????? dossier=null;
????????? ????? return list;
???????}
??????}
?????}//沒有包含temp的記錄或者文件類型標準沒有多體系標準文件,則把TEMP分割
?????String[] tempArray=temp.split("&");//以"&"分割
?????//String temp2="";
?????for(int i=0;i<tempArray.length;i++){
?????sql=null;
??? ????pstmt=null;
??? ????sql="select documenttypeid as documenttypeid,name as name,isstandard as isstandard from basedocumenttype";
??? ????sql=sql+" where isstandard='"+tempArray[i]+"'";//以分割后的條件查詢文件類型表中的文件類型ID和文件名稱
??? ????pstmt=conn.prepareStatement(sql);
??? ????ResultSet rs2=pstmt.executeQuery();
??? ????while(rs2.next()){
??? ??????DossierForm dossier=new DossierForm();
??? ??????dossier.setAuthenticationstandardid(rs2.getString("isstandard"));
??? ??????dossier.setDocumentTypeID(rs2.getString("documenttypeid"));
??? ??????dossier.setDocumentTypeName(rs2.getString("name"));
??? ??????pstmt=null;
??? ??????sql=null;
??? ??????rs2=null;
??? ??????sql="select name as name from baseauthenticationstandard where authenticationstandardid="+dossier.getAuthenticationstandardid();
??? ??????pstmt=conn.prepareStatement(sql);
??? ??????rs2=pstmt.executeQuery();
??? ??????while(rs2.next()){//這里顯示的標準是文件對應的認證標準,則不需要進行分離后的復合
??? ???????/*if(temp2==""){
??? ????????temp2=rs2.getString("name");
??? ???????}else{
??? ????????temp2=temp2+"&"+rs2.getString("name");
??? ???????}*/
??? ???????dossier.setAuthenticationstandardname(rs2.getString("name"));
??? ???????list.add(dossier);
??????? ??????dossier=null;
??? ??????}
??? ?????}
?????}?
????}else{//單體系文件,則直接顯示認證類型標準
?????sql=null;
????? ??pstmt=null;
????? ??sql="select basedocumenttype.documenttypeid as documenttypeid,basedocumenttype.name as typename,";
????? ??sql=sql+"baseauthenticationstandard.name as authenticationstandardname from basedocumenttype";
????? ??sql=sql+" inner join baseauthenticationstandard on basedocumenttype.isstandard=baseauthenticationstandard.authenticationstandardid";
????? ??sql=sql+" where basedocumenttype.isstandard="+temp;
????? ??pstmt=conn.prepareStatement(sql);
????? ??rs1=pstmt.executeQuery();
????? ??while(rs1.next()){
????? ???DossierForm dossier=new DossierForm();
????? ???dossier.setDocumentTypeID(rs1.getString("documenttypeid"));
??????dossier.setDocumentTypeName(rs1.getString("typename"));
??????dossier.setAuthenticationstandardname(rs1.getString("authenticationstandardname"));
??????list.add(dossier);
??????dossier=null;
????? ??}
????}
??? ??}
??? ?}catch(SQLException ex){
??? ??System.out.print(ex.getMessage());
??? ?}finally{
??? ??? if(pstmt!=null){try{pstmt.close();}catch(Exception e){}}
???? if(conn!=null){try{conn.close();}catch(Exception e){}}
??? ?}
??? ?return list;
??? }
代碼里面充斥了大量的JDBC代碼,使得代碼看起來是一片混亂.有點讓自己感覺嘔吐的感覺.
但是又不想去動他,因為修改很麻煩
posted on 2006-12-19 15:01
云靜心舞
閱讀(298)
評論(0)
編輯
收藏
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
Powered by:
BlogJava
Copyright © 云靜心舞
My Links
BlogJava
首頁
聯系
聚合
管理
Blog Stats
Posts - 2
Stories - 2
Comments - 0
Trackbacks - 0
常用鏈接
我的隨筆
我的評論
我的參與
留言簿
(2)
給我留言
查看公開留言
查看私人留言
隨筆檔案
2007年4月 (1)
2006年10月 (1)
文章檔案
2007年4月 (1)
2006年12月 (1)
搜索
最新評論
閱讀排行榜
1.?Tomcat+DB2的數據庫連接池配置(轉)(2503)
2.?隨想~~(203)
評論排行榜
1.?Tomcat+DB2的數據庫連接池配置(轉)(0)
2.?隨想~~(0)
主站蜘蛛池模板:
会理县
|
突泉县
|
清苑县
|
如皋市
|
铁岭市
|
台湾省
|
苏尼特右旗
|
正镶白旗
|
青铜峡市
|
瓮安县
|
乌鲁木齐县
|
库尔勒市
|
舒城县
|
长武县
|
吕梁市
|
南通市
|
灌南县
|
肇源县
|
尉氏县
|
开封市
|
洛宁县
|
改则县
|
阿克苏市
|
锦州市
|
霍林郭勒市
|
荆州市
|
舒兰市
|
四子王旗
|
花莲县
|
新津县
|
苏州市
|
林口县
|
凤山县
|
四会市
|
敦化市
|
新竹县
|
郎溪县
|
蓬溪县
|
太仆寺旗
|
莱芜市
|
南雄市
|