在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

SQLServer中怎么实现层次数据查询

99次阅读
没有评论

共计 6242 个字符,预计需要花费 16 分钟才能阅读完成。

SQLServer 中怎么实现层次数据查询,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

SQLServer2000 层次数据查询的实现方法是什么

// 层次数据实体

publicclassComLevelDataEntity{publicComLevelDataEntity(){searchLevel=0;startWithRoot=true;dataObjectAlias= t}privateintsearchLevel;////// 查询层次 ///publicintSearchLevel{get{returnsearchLevel;}set{searchLevel=value;}}privatestringdataObjectAlias;////// 别名 ///publicstringDataObjectAlias{get{returndataObjectAlias;}set{dataObjectAlias=value;}}privatestringprotasis;////// 条件从句 ///publicstringProtasis{get{returnstring.IsNullOrEmpty(protasis)string.Empty:string.Concat(and ,protasis);}set{protasis=value;}}privateboolstartWithRoot;////// 整树搜索 ///publicboolStartWithRoot{get{returnstartWithRoot;}set{startWithRoot=value;}}privatestringdataObjectName;////// 数据对象名称 ///publicstringDataObjectName{get{returndataObjectName;}set{dataObjectName=value;}}privateintcascadeLevel;////// 层级 ///publicintCascadeLevel{get{returncascadeLevel;}set{cascadeLevel=value;}}privatestringdisplayFieldName;////// 显示字段名称 ///publicstringDisplayFieldName{get{returndisplayFieldName;}set{displayFieldName=value;}}privatestringkeyFieldName;////// 键值字段名称 ///publicstringKeyFieldName{get{returnkeyFieldName;}set{keyFieldName=value;}}privatestringdisplayFieldValue;////// 显示字段值 ///publicstringDisplayFieldValue{get{returndisplayFieldValue;}set{displayFieldValue=value;}}privatestringkeyFieldValue;////// 键值字段值 ///publicstringKeyFieldValue{get{returnkeyFieldValue;}set{keyFieldValue=value;}}privatestringlevelFieldName;////// 层次字段名称 ///publicstringLevelFieldName{get{returnlevelFieldName;}set{levelFieldName=value;}}privatestringlevelFieldValue;////// 层次字段值 ///publicstringLevelFieldValue{get{returnlevelFieldValue;}set{levelFieldValue=value;}}}

//sqlserver2000 存储过程

ifexists(select*fromdbo.sysobjectswhereid=object_id(N [dbo].[sp_gettreedata] )andOBJECTPROPERTY(id,N IsProcedure)=1)dropprocedure[dbo].[sp_gettreedata]GOSETQUOTED_IDENTIFIERONGOSETANSI_NULLSONGOCREATEPROCEDURE[dbo].[sp_gettreedata](@table_namenvarchar(50),@idnvarchar(50),@namenvarchar(50),@parent_idnvarchar(50),@startIdnvarchar(50),@maxlevelint)ASdeclare@v_idnvarchar(50)declare@v_levelintdeclare@sqlnvarchar(500)declare@v_maxlevelintbegincreatetable#temp(idnvarchar(50),namenvarchar(50),parent_idnvarchar(50))createtable#t1(idnvarchar(50),namenvarchar(50),parent_idnvarchar(50),levelint)deletefromcom_tempset@sql= insertinto#tempselect +@id+ , +@name+ , +@parent_id+ from +@table_nameexecsp_executesql@sqlset@v_level=1set@v_id=@startIdset@v_maxlevel=@maxlevelinsert#t1selecta.id,a.name,a.parent_id,@v_levelfrom#tempawherea.id=@v_idwhile@@rowcount 0beginset@v_level=@v_level+1insert#t1selecta.id,a.name,a.parent_id,@v_levelfrom#tempawherea.parent_idin(selectidfrom#t1wherelevel=@v_level-1)endinsertintoCom_TEMPselecta.level,a.id,a.name,a.parent_id,b.nameparent_namefrom#t1aleftouterjoin#tempbona.parent_id=b.idwherea.level [email protected]*fromcom_temporderbydbo.f_getidpath(id)endgosetquoted_identifieroffgosetansi_nullsongo fromdbo.sysobjectswhereid= object_id(N [dbo].[f_getidpath] )andxtypein(N FN ,N IF ,N TF))dropfunction[dbo].[f_getidpath]GOSETQUOTED_IDENTIFIEROFFGOSETANSI_NULLSONGOCREATEfunctionf_getidpath(@idchar(36))returnsvarchar(8000)asbegindeclare@revarchar(8000),@pidchar(36)set@re=@idselect@pid=parent_idfromcom_tempwhereid=@idwhile@@rowcount 0select@re=@pid+ . +@re,@pid=parent_idfromcom_tempwhereid=@pidreturn(@re)endGOSETQUOTED_IDENTIFIEROFFGOSETANSI_NULLSONGO

// 数据访问层方法

publicComLevelDataEntity[]PrepareHierarchyData(ComLevelDataEntityentity){System.Data.SqlClient.SqlParameter[]parameters=newSystem.Data.SqlClient.SqlParameter[6];parameters[0]=newSqlParameter();parameters[0].ParameterName= @table_name parameters[0].Size=50;parameters[0].SqlDbType=System.Data.SqlDbType.VarChar;parameters[1]=newSqlParameter();parameters[1].ParameterName= @id parameters[1].Size=50;parameters[1].SqlDbType=System.Data.SqlDbType.VarChar;parameters[2]=newSqlParameter();parameters[2].ParameterName= @name parameters[2].Size=50;parameters[2].SqlDbType=System.Data.SqlDbType.VarChar;parameters[3]=newSqlParameter();parameters[3].ParameterName= @parent_id parameters[3].Size=50;parameters[3].SqlDbType=System.Data.SqlDbType.VarChar;parameters[4]=newSqlParameter();parameters[4].ParameterName= @startId parameters[4].Size=50;parameters[4].SqlDbType=System.Data.SqlDbType.VarChar;parameters[5]=newSqlParameter();parameters[5].ParameterName= @maxlevel parameters[5].SqlDbType=System.Data.SqlDbType.Int;stringspName= sp_gettreedata if(entity.SearchLevel =0){parameters[0].Value=entity.DataObjectName;parameters[1].Value=entity.KeyFieldName;parameters[2].Value=entity.DisplayFieldName;parameters[3].Value=entity.LevelFieldName;parameters[4].Value=entity.KeyFieldValue;parameters[5].Value=100;}else{parameters[0].Value=entity.DataObjectName;parameters[1].Value=entity.KeyFieldName;parameters[2].Value=entity.DisplayFieldName;parameters[3].Value=entity.LevelFieldName;parameters[4].Value=entity.KeyFieldValue;parameters[5].Value=entity.SearchLevel;}Listresults=newList();IDbConnectionconnection=IDALProvider.IDAL.PopConnection();IDataReadersqlReader=IDALProvider.IDAL.ExecuteReader(connection,spName,parameters);while(sqlReader.Read()){ComLevelDataEntityresult=newComLevelDataEntity();if(!sqlReader.IsDBNull(0))result.CascadeLevel=(int)sqlReader.GetInt32(0);if(!sqlReader.IsDBNull(1))result.KeyFieldValue=sqlReader.GetString(1);if(!sqlReader.IsDBNull(2))result.DisplayFieldValue=sqlReader.GetString(2);if(!sqlReader.IsDBNull(3))result.LevelFieldValue=sqlReader.GetString(3);result.DataObjectName=entity.DataObjectName;result.DisplayFieldName=entity.DisplayFieldName;result.LevelFieldName=entity.LevelFieldName;result.KeyFieldName=entity.KeyFieldName;results.Add(result);}sqlReader.Close();IDALProvider.IDAL.PushConnection(connection);returnresults.ToArray();}
// 前端调用代码
ComLevelDataEntityentity=newComLevelDataEntity();entity.DataObjectName= COM_DEPART entity.DataObjectAlias= t entity.StartWithRoot=true;entity.KeyFieldName= id entity.LevelFieldName= parent_id entity.DisplayFieldName= name entity.KeyFieldValue=SystemLogic.CurrentUser.DATA_ORGANISE_ID;ComLevelDataEntity[]results=IDALProvider.IDAL.PrepareHierarchyData(entity);this.tvTree.DataSource=results;this.tvTree.DataBind(); 

关于 SQLServer 中怎么实现层次数据查询问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注丸趣 TV 行业资讯频道了解更多相关知识。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-03发表,共计6242字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 日韩色欲人妻无码精品av | 成年人黄国产 | 亚洲永久无码7777kkk | 每日更新在线观看av_手机 | 麻豆国产丝袜白领秘书在线观看 | 曰本无码人妻丰满熟妇啪啪 | 少妇被粗大的猛烈进出动视频 | 国产亚洲精品久久久美女18黄 | 毛片看| 亚洲精品无码永久在线观看 | 91麻豆麻豆| 精品在线第一页 | 动漫一区二区三区 | 一级毛片全部免费播放 | 久久精品国产亚洲av果冻传媒 | 久久久久久久99精品免费 | 成年人免费在线视频网站 | 日本一级特黄毛片高清视频 | 特黄大片又粗又大又暴 | 美日韩中文字幕 | 男男黄gay片免费网站www | 尻逼久久 | 2022国产成人综合精品 | 免费视频爱爱太爽在线观看 | 日韩视频 中文字幕 视频一区 | 九九热在线视频免费观看 | www.日本在线观看 | 欧美成人天天综合在线视色 | 黄色在线观看www | 欧美日本一区二区三区生 | 中文在线1区二区六区 | 国产精品久久久久久久 | a毛片a毛片a视频 | 午夜爽爽爽 | 亚洲精品线在线观看 | 免费无码又爽又刺激高潮 | 草草地址线路①屁屁影院成人 | 四虎影视 | 亚洲人成人一区二区三区 | 日韩欧美视频在线一区二区 | 亚洲aaaa级特黄毛片 |