云靜心舞
青青孜涇,悠悠我心
這樣的代碼,是我寫的嗎??
???前段時間翻看自己一起做的一個項目的代碼,忽然明白為什么業務邏輯和數據持久層的分離顯的如此重要.
??? 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
云靜心舞
閱讀(300)
評論(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的數據庫連接池配置(轉)(2505)
2.?隨想~~(204)
評論排行榜
1.?Tomcat+DB2的數據庫連接池配置(轉)(0)
2.?隨想~~(0)
主站蜘蛛池模板:
亳州市
|
田林县
|
台前县
|
景宁
|
安达市
|
渭源县
|
平江县
|
元江
|
汝阳县
|
弥勒县
|
芮城县
|
柘荣县
|
偏关县
|
界首市
|
桓台县
|
吉隆县
|
扶风县
|
泽库县
|
疏勒县
|
定边县
|
泾阳县
|
濮阳县
|
通榆县
|
南宫市
|
丰原市
|
丽江市
|
宁德市
|
河北省
|
思南县
|
湖北省
|
东山县
|
吉木萨尔县
|
绥芬河市
|
两当县
|
桦川县
|
海丰县
|
中超
|
南安市
|
连平县
|
黔西县
|
云南省
|