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(" ");
// }
// 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(" ");
// }
// 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);
}
}
}
分享到:
相关推荐
通过以上文件,初学者可以了解到如何在LabVIEW中创建、操作和显示树形结构,包括加载数据、遍历节点、添加和修改节点信息等基本操作。这些实例提供了一套完整的树形结构功能示例,有助于快速掌握LabVIEW中的树形控件...
树形结构的基本元素包括根节点、子节点和父节点。根节点是树的起始点,没有父节点;而子节点可以有多个,并且每个子节点都有一个父节点。节点之间的关系通过边来表示,形成层次结构。在可编辑的树形结构中,用户可以...
首先,树形结构的基本概念是通过节点(Node)和边(Edge)来表示层次关系的数据结构。在菜单树形结构中,每个节点通常代表一个菜单项,而边则表示父节点与子节点之间的层级关系。这种结构有助于用户直观地理解和操作...
在教师信息系统的基本信息模块中,地址信息的管理是构建树形结构的一个应用场景。为了保证信息的准确性并能够基于各种条件生成报表,使用树形选择框可以有效避免直接输入所可能带来的问题。 在设计树形结构算法时,...
在Java编程中,构建和显示树形结构是一种常见的任务,特别是在数据表示、文件系统操作或者组织复杂的对象层次结构时。本篇文章将详细讲解如何在Java中根据过滤条件来实现这一功能,同时也会提及所需的jar包。 首先...
4. **数据操作**:树形结构插件通常支持添加、删除、编辑节点等基本操作,同时也可能包含搜索、排序、过滤等功能,帮助用户高效地管理和操作数据。 5. **API和编程接口**:对于开发者而言,树形结构插件应提供丰富...
遍历树是处理树形结构常用的操作,主要有三种遍历方式:深度优先搜索(DFS)和广度优先搜索(BFS)。 1. 深度优先搜索:包括前序遍历、中序遍历和后序遍历。 - 前序遍历:先访问根节点,再遍历左子树,最后遍历右...
本文主要探讨了使用Vue框架实现带有复选框的树形结构组件,重点在于在已有的递归组件基础上添加多选框功能,并实现一些基本的交互逻辑。要实现这样的功能,需要考虑以下几个关键技术点: 1. **递归组件的使用**:...
在这个项目中,我们探讨的是如何在Java环境中,利用JSP(JavaServer Pages)和Servlet技术构建一个可视化的树形结构,并实现增删改查及刷新等基本功能。以下是对这个项目的详细解释: 1. **树形结构基础**: - 树...
**树形结构组件 xyTree详解** 在IT领域,树形结构是一种常见的数据组织形式,它模仿自然界中的树状结构,用于表示层次关系的数据。xyTree是专为前端开发设计的一款强大的树形结构组件,适用于展示和操作具有层级...
首先,我们需要理解树形结构的基本概念。在计算机科学中,树形结构是一种非线性的数据结构,由节点(也称为顶点)和边(也称为连接)组成。每个节点可以有零个或多个子节点,而一个节点只有一个父节点,除了根节点,...
首先,理解树形结构的基本概念至关重要。在计算机科学中,树是由节点(也称为顶点)和边组成的非线性数据结构。每个节点可以有零个或多个子节点,而顶部的节点称为根节点。没有父节点的节点称为叶节点。树的深度表示...
首先,我们需要理解树形结构的基本概念。树形结构是由节点(Node)组成的一种数据结构,每个节点可以有零个或多个子节点。在Android中,我们可以使用ListView或者RecyclerView来模拟这种结构,通过递归地加载子节点...
首先,我们需要理解树形结构的基本概念。树形结构是一种非线性的数据结构,它由节点(或称为顶点)和边构成,每个节点可以有零个或多个子节点,而顶层节点通常被称为根节点。在网站后台管理中,这种结构常用于菜单、...
**jsTree:构建前端树形结构的利器** jsTree 是一个强大的 JavaScript 库,专用于在 Web 页面上创建交互式的树形结构。它基于纯 JavaScript 编写,无需依赖其他库,因此对于初学者和有经验的开发者来说,都是一个...
在Oracle中,树形结构查询的基本语法如下: ```sql SELECT [LEVEL], * FROM table_name START WITH 条件1 CONNECT BY PRIOR 条件2 WHERE 条件3 ORDER BY 排序字段 ``` - `LEVEL`:这是一个伪列,用于表示树的层级...
在IT行业中,构建用户界面时,常常需要处理各种数据结构,特别是树形结构。树形结构组件在数据展示、组织管理、导航等方面有着广泛的应用。本文将深入探讨一个特别的树形组件,它具备无限级、单选、多选、搜索及面包...
这个“xtree”项目显然是一个具有添加和修改功能的树形结构实现,可能是为了在网页上展示和操作层次化的数据。 首先,我们来了解一下树形结构的基础知识。树形结构是由节点(或称为元素)和边(或连接线)组成的...
根据提供的文件信息,我们可以分析并总结出以下关于“Java实现动态改变树形结构中主节点的名称”的相关知识点: ### 一、理解树形结构 在计算机科学中,树形结构是一种常用的数据组织形式,它将数据组织成类似于树...
首先,我们来详细理解树形结构类的基本概念。树是一种非线性的数据结构,由节点(或称为顶点)和边组成。每个节点可以有零个或多个子节点,而只有一个父节点(除了根节点)。这种结构允许快速查找、插入和删除操作,...