`

.net级联删除自联表树结构

 
阅读更多
今天同事问我说如何删除树结构的自联表,要求是子树是无限的未知的。于是乎简单的方法实现了下。改天再优化过。如果有好的意见请各位看官给个意见,小的将感激不尽。不废话上代码上图
主要方法:(c# java的方法类似,函数格式不一样而已)
Function 级联删除(ByVal str_表名 As String, ByVal str_主键字段 As String, ByVal str_父字段标记 As String, ByVal str_主键值 As String) As Boolean
            Dim idslip = 获取ID串(str_表名, str_主键字段, str_父字段标记, str_主键值)
            Dim sql = ""
            Dim isok As Boolean
            Dim idarry = idslip.Split(",")
            sql = "delete " + str_表名 + " Where 1>0 and  " + str_父字段标记 + "='" + str_主键值 + "' or " + str_主键字段 + "='" + str_主键值 + "'"
            If idslip.Length > 0 Then
                For i = 0 To idarry.Length - 1
                    System.Web.HttpContext.Current.Response.Write("当前串是:" + idslip + "主键是:" + str_主键值 + "<br>")
                    isok = delete(sql)
                    级联删除(str_表名, str_主键字段, str_父字段标记, idarry(i))

                Next
                Return isok
            End If


            Return True
        End Function

        '获取某个记录下的所有下级记录ID
        Function 获取ID串(ByVal str_表名 As String, ByVal str_主键字段 As String, ByVal str_父字段标记 As String, ByVal str_主键值 As String) As String
            Dim DataConn As New SqlConnection(strConn)
            Dim strSQL As String
            Dim strIDslipt = ""
            strSQL = "SELECT   " + str_主键字段 + " FROM " + str_表名 + " Where 1>0 and  " + str_父字段标记 + "='" + str_主键值 + "'"

            Dim DataAdapter As New SqlDataAdapter(strSQL, DataConn)
            Dim DataSet As New DataSet
            Try
                DataSet.Clear()
                DataAdapter.Fill(DataSet)
                If DataSet.Tables(0).Rows.Count <> 0 Then
                    For i = 0 To DataSet.Tables(0).Rows.Count - 1
                        strIDslipt &= DataSet.Tables(0).Rows(i)(str_主键字段) + ","
                    Next
                End If
            Catch err As Exception
                Return ""
            Finally
                DataConn.Close()
            End Try
            DataSet.Dispose()
            Return strIDslipt
        End Function

        '删除方法
        Function delete(ByVal sql As String) As Boolean
            System.Web.HttpContext.Current.Response.Write(sql + "<br>")
            Dim sqlconn As New SqlConnection(strConn)
            Try
                Dim cmdTable As SqlCommand = New SqlCommand(sql, sqlconn)
                cmdTable.CommandType = CommandType.Text
                sqlconn.Open()
                cmdTable.ExecuteNonQuery()
                Return True
            Catch
                Return False
            Finally
                sqlconn.Close()
            End Try
        End Function


附件是表的数据和结构

测试页面的代码是:
Public Class index1
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub

    Protected Sub Btn_delete_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Btn_delete.Click
        Dim obj = New AutoCommon.数据操作()
        obj.级联删除("字典_行政区划表", "区划代码", "父级代码", TxB_值.Text.Trim)
       
    End Sub
End Class
  • 大小: 11.4 KB
分享到:
评论

相关推荐

    .Net 级联案例,树形控件,下拉列表。

    在.NET框架中,级联(Cascading)是一种常见的数据绑定技术,用于创建相互关联的控件,如树形控件和下拉列表。这种技术能够帮助用户在多个选择之间建立逻辑关系,使得一个控件的选择会影响另一个控件的显示内容。在...

    级联动态树

    在级联动态树的应用中,这些语句可能需要递归地处理整个树结构,以确保所有相关节点的状态正确反映在数据库中。例如,一个典型的SELECT语句可能用于获取指定节点及其所有子节点的数据,而INSERT语句则用于在树中添加...

    Asp.Net三层架构版无限极分类(增删改查)

    删除分类则要考虑其子分类,通常会进行级联删除。 在实际开发中,"hyclass"可能是一个项目文件夹或数据库表名,包含了实现上述功能的代码文件或数据。例如,可能包含.aspx(表现层)文件、.cs(业务逻辑层)文件、....

    [其他类别]简单三层实现的无限级DropDownList_dropdownlist(ASP.NET源码).rar

    - 数据结构:为了存储无限层级的数据,可能需要使用自引用的表结构,或者使用树形结构的数据模型。 - 动态加载:由于数据层级可能是无限的,所以不能一次性加载所有数据。而是需要在用户展开下拉菜单时,动态加载...

    无限级联绑定 repeater列表管理

    1. **无限级联**:在数据结构设计中,无限级联通常涉及到自引用或者循环引用的数据模型,例如一个类别可以有多个子类别,每个子类别也可以有子类别,形成无限深的层级。在数据库中,这可能通过递归关系或树形结构来...

    C#.net_经典编程例子400个

    5 实例006 菜级联菜单 7 1.2 工具栏设计 7 实例007 带背景的工具栏 7 实例008 浮动工具栏 8 实例009 带下拉菜单的工具栏 9 实例010 具有提示功能的工具栏 9 1.3 状态栏设计 10...

    XML编程入门经典

    - **级联样式表(CSS)**:CSS用于控制XML文档的呈现方式,使内容与显示分离。 - **可扩展样式表(XSL)**:XSL包括XSLT(用于转换XML文档)、XPath(用于定位XML文档中的元素)和XSL-FO(用于格式化输出)。 #### 三、...

    编程英语单词

    - 二叉树是一种特殊的树形数据结构,每个节点最多有两个子节点。 53. **Binary Function (双参函数):** - 双参函数是指接受两个参数的函数。 54. **Binary Large Object (二进制大对象):** - 二进制大对象是指...

    2021-2022计算机二级等级考试试题及答案No.14673.docx

    在Access中,为了实现删除主表中的记录时同时删除子表中与之相关的记录这一操作,需要设置参照完整性约束,具体可以通过设置级联删除操作来实现。 #### 18. 硬盘容量单位 - **知识点说明**:硬盘是计算机中用于...

    ibatis 文档查询

    同时,可以通过配置文件进行DDL操作,例如创建、修改或删除数据库表结构。 6. **处理极大的数据集** 对于大规模数据的处理,iBATIS提供了分页查询、流式处理等技术,以减少内存占用并提高性能。例如,通过使用`...

    软件开发技术常用术语英中对照

    **级联删除**:当删除主记录时自动删除相关记录的过程。 #### Cascading Update **级联更新**:当更新主记录时自动更新相关记录的过程。 #### Casting **类型转换**:将一种数据类型转换为另一种数据类型的过程。 ...

    C#程序开发范例宝典(第2版).part13

    实例006 级联菜单 6 1.2 工具栏设计 6 实例007 带背景的工具栏 7 实例008 浮动工具栏 7 实例009 带下拉菜单的工具栏 8 实例010 具有提示功能的工具栏 8 1.3 状态栏设计 9 实例011 在状态栏中显示检查框 9 ...

    C#程序开发范例宝典(第2版).part08

    实例006 级联菜单 6 1.2 工具栏设计 6 实例007 带背景的工具栏 7 实例008 浮动工具栏 7 实例009 带下拉菜单的工具栏 8 实例010 具有提示功能的工具栏 8 1.3 状态栏设计 9 实例011 在状态栏中显示检查框 9 ...

    C#程序开发范例宝典(第2版).part02

    实例006 级联菜单 6 1.2 工具栏设计 6 实例007 带背景的工具栏 7 实例008 浮动工具栏 7 实例009 带下拉菜单的工具栏 8 实例010 具有提示功能的工具栏 8 1.3 状态栏设计 9 实例011 在状态栏中显示检查框 9 ...

    C#程序开发范例宝典(第2版).part12

    实例006 级联菜单 6 1.2 工具栏设计 6 实例007 带背景的工具栏 7 实例008 浮动工具栏 7 实例009 带下拉菜单的工具栏 8 实例010 具有提示功能的工具栏 8 1.3 状态栏设计 9 实例011 在状态栏中显示检查框 9 ...

Global site tag (gtag.js) - Google Analytics