树形结构的基本处理
package com.lee.util;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class ClientTreeReader {private StringBuffer sbTree = new StringBuffer();public String read() {Connection conn = null;try {conn = DB.getConnection();read(conn, 0, 0);}catch(Exception e) {e.printStackTrace();}finally {DB.closeConn(conn);}return sbTree.toString();}/** * 递归读取(先读出来)---这是基础 * @param conn * @param id * @param level * @throws SQLException *///private void read(Connection conn, int id, int level) throws SQLException {////String sql = "select * from t_client where pid=?";//PreparedStatement pstmt = null;//ResultSet rs = null;//try {//pstmt = conn.prepareStatement(sql);//pstmt.setInt(1, id);//rs = pstmt.executeQuery();//while (rs.next()) {//sbTree.append(rs.getString("name"))//.append("<br>")//.append("\n");//if ("N".equals(rs.getString("is_leaf"))) {//read(conn, rs.getInt("id"), level);//}//}//}finally {//DB.closeRs(rs);//DB.closePstmt(pstmt);//}//}///**// * 递归读取分销商树// * // * 第二步:加入层次感// * @param conn// * @param id// * @param level 控制层次// *///private void read(Connection conn, int id, int level) //throws SQLException {//level++;//String sql = "select * from t_client where pid=?";//PreparedStatement pstmt = null;//ResultSet rs = null;//try {//pstmt = conn.prepareStatement(sql);//pstmt.setInt(1, id);//rs = pstmt.executeQuery();//while (rs.next()) {//for (int i=0; i<level-1; i++) {//sbTree.append("&nbsp;&nbsp;");//} //sbTree.append(rs.getString("name"))//.append("<br>")//.append("\n");//if ("N".equals(rs.getString("is_leaf"))) {//read(conn, rs.getInt("id"), level);//}//}//}finally {//DB.closeRs(rs);// DB.closePstmt(pstmt);//}//}/**// * 递归读取分销商树// * // * 第三步:叶子节点前加入“-”号,非叶子节点前加入“+”// * @param conn// * @param id// * @param level 控制层次// *///private void read(Connection conn, int id, int level) //throws SQLException {//level++;//String sql = "select * from t_client where pid=?";//PreparedStatement pstmt = null;//ResultSet rs = null;//try {//pstmt = conn.prepareStatement(sql);//pstmt.setInt(1, id);//rs = pstmt.executeQuery();//while (rs.next()) {//for (int i=0; i<level-1; i++) {//sbTree.append("&nbsp;&nbsp;");//} //if ("N".equals(rs.getString("is_leaf"))) {//sbTree.append("+")//.append(rs.getString("name"))//.append("<br>")//.append("\n");//read(conn, rs.getInt("id"), level);//}else {//sbTree.append("-")//.append(rs.getString("name"))//.append("<br>")//.append("\n");//}//}//}finally {//DB.close(rs);//DB.close(pstmt);//}//}/** * 递归读取分销商树 ** 第四步:采用div生成树 * @param conn * @param id * @param level 控制层次 */private void read(Connection conn, int id, int level) throws SQLException {level++;String sql = "select * from t_client where pid=?";PreparedStatement pstmt = null;ResultSet rs = null;try {pstmt = conn.prepareStatement(sql);pstmt.setInt(1, id);rs = pstmt.executeQuery();while (rs.next()) {sbTree.append("<div>");for (int i=0; i<level-1; i++) {sbTree.append("<img src=\"../images/white.gif\">");} if ("N".equals(rs.getString("is_leaf"))) {sbTree.append("<img alt=\"展开\" style=\"cursor:hand;\" onClick=\"display('" + rs.getInt("id") + "');\" id=\"img" + rs.getInt("id") + "\" src=\"../images/plus.gif\">");sbTree.append("\n");sbTree.append("<img id=\"im" + rs.getInt("id") +"\" src=\"../images/closedfold.gif\">");sbTree.append("\n");sbTree.append("<a href=\"client_node_crud.jsp?id=" + rs.getInt("id") + "\" target=\"clientDispAreaFrame\">" + rs.getString("name") + "</a>");sbTree.append("\n");sbTree.append("<div style=\"display:none;\" id=\"div" + rs.getInt("id") + "\">");sbTree.append("\n");read(conn, rs.getInt("id"), level);sbTree.append("</div>");sbTree.append("\n");}else {sbTree.append("<img src=\"../images/minus.gif\">");sbTree.append("<img src=\"../images/openfold.gif\">");if ("Y".equals(rs.getString("is_client"))) {sbTree.append("<a href=\"client_crud.jsp?id=" + rs.getInt("id") + "\" target=\"clientDispAreaFrame\">" + rs.getString("name") +"</a>");}else {sbTree.append("<a href=\"client_node_crud.jsp?id=" + rs.getInt("id") + "\" target=\"clientDispAreaFrame\">" + rs.getString("name") + "</a>");}sbTree.append("\n");}sbTree.append("</div>");}}finally {DB.closeRs(rs);DB.closePstmt(pstmt);}}}
页:
[1]