和同事寫了一個下午的遞迴讀取資料庫的javabean

來源:互聯網
上載者:User
遞迴|資料|資料庫
/* * 建立日期 2005-4-14 * * TODO 要更改此產生的檔案的模板,請轉至 * 視窗 - 喜好設定 - Java - 代碼樣式 - 代碼模板 */package treeMenu;import java.util.*;import java.sql.*;import dbmanager.DBConnection;import javax.servlet.jsp.JspWriter;/** * @author 呆猴 lucky * * TODO 要更改此產生的類型注釋的模板,請轉至 * 視窗 - 喜好設定 - Java - 代碼樣式 - 代碼模板 */public class Tree {    private DBConnection conn;    public ArrayList arrayid;//定義包含所有id的數組    public ArrayList arrayname;//定義包含所有名稱的數組    public ArrayList arrayparent;//定義包含所有父id的數組    public ArrayList class1_id;//定義包含所有一級資訊id的數組    public Tree(){    try{      conn=new DBConnection();    }    catch(Exception e){      System.out.println("sorry");    }    }    /**     *      * 定義讀取所有相關記錄和一級資訊的方法     */    public void buidTreeinit() throws SQLException{    ResultSet rs=conn.runRs("select * from sp_sys_menu_item");    String aa="";    String id="";    String name="";    String parent_id="";    int i=0;    arrayid=new ArrayList();    arrayname=new ArrayList();    arrayparent=new ArrayList();    class1_id=new ArrayList();     while(rs.next()){     id=rs.getString("id");     name=rs.getString("name");     parent_id=rs.getString("parent_id");     arrayid.add(id);//把所有id資訊賦值到arrayid數組中     arrayname.add(name);//把所有name資訊賦值到arrayname數組中     arrayparent.add(parent_id);//把所有parent_id資訊賦值到arrayparent數組中     /**      * 把所有的一級資訊賦值到數組class1_id中      */     if(parent_id.equals("0"))      {      class1_id.add(id);      }    }    conn.free();    }    /**     * 開始定義樹型結構的構造     * @param parentid     * @throws SQLException     */    public void buildTree(JspWriter out,String parentid,int j) throws Exception{        j++;   ArrayList tmplist=new ArrayList();//包含所有父id為parent_id的記錄的名稱數組   String mmm="    ";   String nnn="|";   for(int q=0;q<j;q++){      nnn=nnn+"--";      mmm=mmm+"    ";   }      String table2="";      table2=table2+"<tr bgcolor=\"#FFFFFF\">";      table2=table2+"<td width=\"70%\" height=\"30\">"+mmm+nnn+" <name></td>";      table2=table2+"<td width=\"30%\" height=\"30\" align=\"center\">";      table2=table2+"修改  ";      table2=table2+"註冊下級菜單  ";      table2=table2+"  <del>";      table2=table2+"</td>";      table2=table2+"</tr>";   while(arrayparent.indexOf(parentid)!=-1)   {     String tmpname=(String)arrayname.get(arrayparent.indexOf(parentid));//擷取所有父id為parent_id的記錄的名稱     String tmpid=(String)arrayid.get(arrayparent.indexOf(parentid));//擷取該子資訊的id,用於賦予下級子資訊的父id     if(has_child(tmpid)){     out.print(table2.replaceAll("<name>",tmpname).replaceAll("<del>",""));     }     else{     out.print(table2.replaceAll("<name>",tmpname).replaceAll("<del>","刪除"));      }     int tmp=arrayparent.indexOf(parentid);//擷取參數parent_id所在位置     arrayparent.remove(tmp);//刪除參數parent_id所在位置的parent_id     arrayid.remove(tmp);//刪除參數parent_id所在位置的id     arrayname.remove(tmp);//刪除參數parent_id所在位置name     if(has_child(tmpid))//如果該條資訊有相關子資訊重新執行buildTree方法       {            buildTree(out,tmpid,j);       }        }     }    /**     * 進行是否有子資訊判斷     * @param parentid     * @return     */    public boolean has_child(String parentid)    {     boolean bb=false;         if(arrayparent.indexOf(parentid)!=-1)     {      

      bb=true;          }     return bb;    }    /**     * 樹型結構顯示     * @param args     * @throws Exception     */    public void showTree(JspWriter out) throws Exception{     Tree aa=new Tree();        aa.buidTreeinit();        String table1="";        table1=table1+"<tr bgcolor=\"#CCCCCC\">";        table1=table1+"<td width=\"70%\" height=\"30\">  <name></td>";      table1=table1+"<td width=\"30%\" height=\"30\" align='center'>";      table1=table1+"修改  ";      table1=table1+"註冊下級菜單  ";      table1=table1+"  <del>";      table1=table1+"</td>";        table1=table1+"</tr>";        for(int i=0;i<aa.class1_id.size();i++)        {         if(aa.has_child((String)aa.class1_id.get(i))){         out.print(table1.replaceAll("<name>",(String)aa.arrayname.get(i)).replaceAll("<del>",""));         }         else{         out.print(table1.replaceAll("<name>",(String)aa.arrayname.get(i)).replaceAll("<del>","刪除"));          }         aa.buildTree(out,(String)aa.class1_id.get(i),0);        }    }}

資料庫連接和資料庫操作類:

/* * 建立日期 2005-4-14 * * TODO 要更改此產生的檔案的模板,請轉至 * 視窗 - 喜好設定 - Java - 代碼樣式 - 代碼模板 */package dbmanager;import java.sql.*;/** * @author Administrator * * TODO 要更改此產生的類型注釋的模板,請轉至 * 視窗 - 喜好設定 - Java - 代碼樣式 - 代碼模板 */public class DBConnection { String user="sa"; String password="sa"; String sDBDriver="com.microsoft.jdbc.sqlserver.SQLServerDriver"; String sConnStr="jdbc:microsoft:sqlserver://172.16.204.10:1433;DatabaseName=HLSP_MIS"; Connection connect=null; ResultSet rs=null; Statement stmt = null, stmt1 = null; public DBConnection(){  try{   Class.forName(sDBDriver);   connect = DriverManager.getConnection(sConnStr,user,password);   stmt = connect.createStatement();   stmt1=connect.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);

  }  catch(Exception e){      System.err.println(e.getMessage());  } } //執行資料庫查詢 public ResultSet runRs(String sql){ rs=null; try{ rs=stmt1.executeQuery(sql); } catch(SQLException ex){ System.err.println(ex.getMessage()); } return rs; } //執行資料庫其他動作 public  boolean  executeSql(String sql) { boolean che=false; try { stmt.executeUpdate(sql); che=true; } catch (SQLException ex) { System.err.println(ex.getMessage()); che=false; } return che; } //進行資料庫連接釋放 public boolean free(){ try {  connect.close();  if (stmt!=null){   stmt.close();      }  if(stmt1!=null){       stmt1.close();      }  return true;  }  catch (Exception e) {  return false;  }

 }}


相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。