云靜心舞

          青青孜涇,悠悠我心

          這樣的代碼,是我寫的嗎??

          ???前段時間翻看自己一起做的一個項目的代碼,忽然明白為什么業務邏輯和數據持久層的分離顯的如此重要.
          ??? 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)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 会理县| 突泉县| 清苑县| 如皋市| 铁岭市| 台湾省| 苏尼特右旗| 正镶白旗| 青铜峡市| 瓮安县| 乌鲁木齐县| 库尔勒市| 舒城县| 长武县| 吕梁市| 南通市| 灌南县| 肇源县| 尉氏县| 开封市| 洛宁县| 改则县| 阿克苏市| 锦州市| 霍林郭勒市| 荆州市| 舒兰市| 四子王旗| 花莲县| 新津县| 苏州市| 林口县| 凤山县| 四会市| 敦化市| 新竹县| 郎溪县| 蓬溪县| 太仆寺旗| 莱芜市| 南雄市|