`
leoizumi
  • 浏览: 93044 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

树形结构的基本处理

阅读更多

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);
		}
	}
	
}
 
分享到:
评论

相关推荐

    LABVIEW树形结构实例

    通过以上文件,初学者可以了解到如何在LabVIEW中创建、操作和显示树形结构,包括加载数据、遍历节点、添加和修改节点信息等基本操作。这些实例提供了一套完整的树形结构功能示例,有助于快速掌握LabVIEW中的树形控件...

    可编辑的树形结构

    树形结构的基本元素包括根节点、子节点和父节点。根节点是树的起始点,没有父节点;而子节点可以有多个,并且每个子节点都有一个父节点。节点之间的关系通过边来表示,形成层次结构。在可编辑的树形结构中,用户可以...

    菜单树形结构,支持三级、多级树形结构代码

    首先,树形结构的基本概念是通过节点(Node)和边(Edge)来表示层次关系的数据结构。在菜单树形结构中,每个节点通常代表一个菜单项,而边则表示父节点与子节点之间的层级关系。这种结构有助于用户直观地理解和操作...

    基于JAVA建立树形结构的算法优化.pdf

    在教师信息系统的基本信息模块中,地址信息的管理是构建树形结构的一个应用场景。为了保证信息的准确性并能够基于各种条件生成报表,使用树形选择框可以有效避免直接输入所可能带来的问题。 在设计树形结构算法时,...

    java-根据过滤条件显示树形结构

    在Java编程中,构建和显示树形结构是一种常见的任务,特别是在数据表示、文件系统操作或者组织复杂的对象层次结构时。本篇文章将详细讲解如何在Java中根据过滤条件来实现这一功能,同时也会提及所需的jar包。 首先...

    树形结构插件

    4. **数据操作**:树形结构插件通常支持添加、删除、编辑节点等基本操作,同时也可能包含搜索、排序、过滤等功能,帮助用户高效地管理和操作数据。 5. **API和编程接口**:对于开发者而言,树形结构插件应提供丰富...

    js树形结构

    遍历树是处理树形结构常用的操作,主要有三种遍历方式:深度优先搜索(DFS)和广度优先搜索(BFS)。 1. 深度优先搜索:包括前序遍历、中序遍历和后序遍历。 - 前序遍历:先访问根节点,再遍历左子树,最后遍历右...

    vue实现的树形结构加多选框示例

    本文主要探讨了使用Vue框架实现带有复选框的树形结构组件,重点在于在已有的递归组件基础上添加多选框功能,并实现一些基本的交互逻辑。要实现这样的功能,需要考虑以下几个关键技术点: 1. **递归组件的使用**:...

    树形结构(增删改查刷新等功能附SQL脚本)

    在这个项目中,我们探讨的是如何在Java环境中,利用JSP(JavaServer Pages)和Servlet技术构建一个可视化的树形结构,并实现增删改查及刷新等基本功能。以下是对这个项目的详细解释: 1. **树形结构基础**: - 树...

    树形结构组件 树形结构组件 xyTree

    **树形结构组件 xyTree详解** 在IT领域,树形结构是一种常见的数据组织形式,它模仿自然界中的树状结构,用于表示层次关系的数据。xyTree是专为前端开发设计的一款强大的树形结构组件,适用于展示和操作具有层级...

    树形结构算法 PHP方面

    首先,我们需要理解树形结构的基本概念。在计算机科学中,树形结构是一种非线性的数据结构,由节点(也称为顶点)和边(也称为连接)组成。每个节点可以有零个或多个子节点,而一个节点只有一个父节点,除了根节点,...

    用递归实现C#树形结构

    首先,理解树形结构的基本概念至关重要。在计算机科学中,树是由节点(也称为顶点)和边组成的非线性数据结构。每个节点可以有零个或多个子节点,而顶部的节点称为根节点。没有父节点的节点称为叶节点。树的深度表示...

    Android 树形结构开发demo,实现单选多选功能

    首先,我们需要理解树形结构的基本概念。树形结构是由节点(Node)组成的一种数据结构,每个节点可以有零个或多个子节点。在Android中,我们可以使用ListView或者RecyclerView来模拟这种结构,通过递归地加载子节点...

    网站常用简单的树形结构

    首先,我们需要理解树形结构的基本概念。树形结构是一种非线性的数据结构,它由节点(或称为顶点)和边构成,每个节点可以有零个或多个子节点,而顶层节点通常被称为根节点。在网站后台管理中,这种结构常用于菜单、...

    使用jsTree实现js树形结构

    **jsTree:构建前端树形结构的利器** jsTree 是一个强大的 JavaScript 库,专用于在 Web 页面上创建交互式的树形结构。它基于纯 JavaScript 编写,无需依赖其他库,因此对于初学者和有经验的开发者来说,都是一个...

    Oracle递归树形结构查询功能

    在Oracle中,树形结构查询的基本语法如下: ```sql SELECT [LEVEL], * FROM table_name START WITH 条件1 CONNECT BY PRIOR 条件2 WHERE 条件3 ORDER BY 排序字段 ``` - `LEVEL`:这是一个伪列,用于表示树的层级...

    无限级树形结构组件,支持单选和多选组件,支持搜索,面包屑类型导航

    在IT行业中,构建用户界面时,常常需要处理各种数据结构,特别是树形结构。树形结构组件在数据展示、组织管理、导航等方面有着广泛的应用。本文将深入探讨一个特别的树形组件,它具备无限级、单选、多选、搜索及面包...

    树形结构xtree有添加和修改的功能。

    这个“xtree”项目显然是一个具有添加和修改功能的树形结构实现,可能是为了在网页上展示和操作层次化的数据。 首先,我们来了解一下树形结构的基础知识。树形结构是由节点(或称为元素)和边(或连接线)组成的...

    java 实现动态改变树形结构中主节点的名称

    根据提供的文件信息,我们可以分析并总结出以下关于“Java实现动态改变树形结构中主节点的名称”的相关知识点: ### 一、理解树形结构 在计算机科学中,树形结构是一种常用的数据组织形式,它将数据组织成类似于树...

    matlab开发-树形结构类

    首先,我们来详细理解树形结构类的基本概念。树是一种非线性的数据结构,由节点(或称为顶点)和边组成。每个节点可以有零个或多个子节点,而只有一个父节点(除了根节点)。这种结构允许快速查找、插入和删除操作,...

Global site tag (gtag.js) - Google Analytics