- 浏览: 118437 次
- 性别:
- 来自: 南宁
文章分类
最新评论
今天同事问我说如何删除树结构的自联表,要求是子树是无限的未知的。于是乎简单的方法实现了下。改天再优化过。如果有好的意见请各位看官给个意见,小的将感激不尽。不废话上代码上图
主要方法:(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
主要方法:(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
发表评论
-
c# winform中当是用了splitContainer 使用回车代替tab按键的好方法
2013-05-29 13:53 754在窗体内重写方法 protected override boo ... -
v6 常用数据操做 VB数据库记录集查询四种方法
2012-02-26 15:09 1101在VB中进行数据库记录的查询操作,必需根据打开数据库的 ... -
图片大小计算
2011-09-18 02:14 2127一直为图片大小计算所吸引,近日搜索资料得知,与大家分享。 ... -
request 操作大全
2011-06-14 11:09 892using System; using System.Web; ... -
。net操作各类时间段获取当前月的1号和月尾
2011-06-09 16:58 1801DateTime dt = DateTime.Now; // ... -
c#连接各类数据库大全
2011-06-01 17:10 1033C#连接SQL数据库 中国 ... -
。net 绑定日期格式化处理
2011-05-09 12:08 820日期和时间的格式化处 ... -
超级简洁的.net防止重复提交数据的处理方法仅仅1行代码
2011-05-09 11:47 684Response.Redirect(Request.Raw ... -
软件设计工作 2010年终总结
2011-02-14 10:46 1033年终总结 自2010年09月参加工作至今,短短一 ... -
LoadRunner 测试实例
2011-01-30 09:28 1865LoadRunner 是一种预测系 ... -
gridview自定义分页样式
2011-01-13 17:13 1239gridview自定义分页样式 2009年12月12日 星期 ... -
GridView分页模版
2011-01-13 17:12 902<PagerTemplate> ... -
.net DateTable的用法
2011-01-13 14:22 819SqlConnection con = new SqlCo ... -
cs vb 链接webconfig的 链接字符串
2011-01-12 22:39 8261.如果这个<add....... />在< ... -
vb.net 生成静态页面列表分页
2010-12-20 15:03 1012Sub test() Dim t As li ... -
.net 的hook 设计
2010-12-09 23:38 1057今天,有个同事问我, ... -
.net上传图片生成缩略图,加文字水印和图片水印
2010-12-09 20:53 1540引用页的代码: Imports dll图片水印缩略图 ... -
Directory 常用的成员和方法
2010-12-08 11:06 684GetLogicalDrives 检索此计算机上格式为“&l ... -
心理辅导是没有用的!
2010-07-21 13:06 608从韩寒这句话,你看出几层意思?“心理辅导是没有用的,当我看见我 ... -
五险一金的使用方法
2010-07-08 20:14 907[网页] 五险一金的使用 ...
相关推荐
通过查询系统表得到纵向的表结构 将数据库表中的数据生成Insert脚本的存储过程!!! 2分法-通用存储过程分页(top max模式)版本(性能相对之前的not in版本极大提高) 分页存储过程:排序反转分页法 优化后的通用分页存储...
5 实例006 菜级联菜单 7 1.2 工具栏设计 7 实例007 带背景的工具栏 7 实例008 浮动工具栏 8 实例009 带下拉菜单的工具栏 9 实例010 具有提示功能的工具栏 9 1.3 状态栏设计 10...
实例006 级联菜单 6 1.2 工具栏设计 6 实例007 带背景的工具栏 7 实例008 浮动工具栏 7 实例009 带下拉菜单的工具栏 8 实例010 具有提示功能的工具栏 8 1.3 状态栏设计 9 实例011 在状态栏中显示检查框 9 ...
实例006 级联菜单 6 1.2 工具栏设计 6 实例007 带背景的工具栏 7 实例008 浮动工具栏 7 实例009 带下拉菜单的工具栏 8 实例010 具有提示功能的工具栏 8 1.3 状态栏设计 9 实例011 在状态栏中显示检查框 9 ...
实例006 级联菜单 6 1.2 工具栏设计 6 实例007 带背景的工具栏 7 实例008 浮动工具栏 7 实例009 带下拉菜单的工具栏 8 实例010 具有提示功能的工具栏 8 1.3 状态栏设计 9 实例011 在状态栏中显示检查框 9 ...
实例006 级联菜单 6 1.2 工具栏设计 6 实例007 带背景的工具栏 7 实例008 浮动工具栏 7 实例009 带下拉菜单的工具栏 8 实例010 具有提示功能的工具栏 8 1.3 状态栏设计 9 实例011 在状态栏中显示检查框 9 ...