自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL Server 2000層次數(shù)據(jù)查詢的實(shí)現(xiàn)方法

數(shù)據(jù)庫(kù) SQL Server
本文我們?cè)敿?xì)地介紹了以C#為前端,來實(shí)現(xiàn)SQL Server 2000層次數(shù)據(jù)查詢的方法,希望能夠?qū)δ兴鶐椭?/div>

以C#為前端,SQL Server 2000層次數(shù)據(jù)查詢是如何實(shí)現(xiàn)的呢?本文我們主要就介紹這部分內(nèi)容,接下來就讓我們一起來了解一下這一過程吧。

//層次數(shù)據(jù)實(shí)體

 

  1. public class ComLevelDataEntity  
  2.    {  
  3.        public ComLevelDataEntity()  
  4.        {  
  5.            searchLevel = 0;  
  6.            startWithRoot = true;  
  7.            dataObjectAlias = "t";  
  8.        }  
  9.        private int searchLevel;  
  10.        /// <summary> 
  11.        /// 查詢層次  
  12.        /// </summary> 
  13.        public int SearchLevel  
  14.        {  
  15.            get { return searchLevel; }  
  16.            set { searchLevel = value; }  
  17.        }  
  18.  
  19.        private string dataObjectAlias;  
  20.        /// <summary> 
  21.        /// 別名  
  22.        /// </summary> 
  23.        public string DataObjectAlias  
  24.        {  
  25.            get { return dataObjectAlias; }  
  26.            set { dataObjectAlias = value; }  
  27.        }  
  28.        private string protasis;  
  29.        /// <summary> 
  30.        /// 條件從句  
  31.        /// </summary> 
  32.        public string Protasis  
  33.        {  
  34.            get  
  35.            {  
  36.                return string.IsNullOrEmpty(protasis) ? string.Empty : string.Concat(" and ", protasis);  
  37.            }  
  38.            set { protasis = value; }  
  39.        }  
  40.  
  41.        private bool startWithRoot;  
  42.        /// <summary> 
  43.        /// 整樹搜索  
  44.        /// </summary> 
  45.        public bool StartWithRoot  
  46.        {  
  47.            get { return startWithRoot; }  
  48.            set { startWithRoot = value; }  
  49.        }  
  50.        private string dataObjectName;  
  51.        /// <summary> 
  52.        /// 數(shù)據(jù)對(duì)象名稱  
  53.        /// </summary> 
  54.        public string DataObjectName  
  55.        {  
  56.            get { return dataObjectName; }  
  57.            set { dataObjectName = value; }  
  58.        }  
  59.  
  60.        private int cascadeLevel;  
  61.        /// <summary> 
  62.        /// 層級(jí)  
  63.        /// </summary> 
  64.        public int CascadeLevel  
  65.        {  
  66.            get { return cascadeLevel; }  
  67.            set { cascadeLevel = value; }  
  68.        }  
  69.  
  70.        private string displayFieldName;  
  71.        /// <summary> 
  72.        /// 顯示字段名稱  
  73.        /// </summary> 
  74.        public string DisplayFieldName  
  75.        {  
  76.            get { return displayFieldName; }  
  77.            set { displayFieldName = value; }  
  78.        }  
  79.  
  80.        private string keyFieldName;  
  81.        /// <summary> 
  82.        /// 鍵值字段名稱  
  83.        /// </summary> 
  84.        public string KeyFieldName  
  85.        {  
  86.            get { return keyFieldName; }  
  87.            set { keyFieldName = value; }  
  88.        }  
  89.  
  90.        private string displayFieldValue;  
  91.        /// <summary> 
  92.        /// 顯示字段值  
  93.        /// </summary> 
  94.        public string DisplayFieldValue  
  95.        {  
  96.            get { return displayFieldValue; }  
  97.            set { displayFieldValue = value; }  
  98.        }  
  99.  
  100.        private string keyFieldValue;  
  101.        /// <summary> 
  102.        /// 鍵值字段值  
  103.        /// </summary> 
  104.        public string KeyFieldValue  
  105.        {  
  106.            get { return keyFieldValue; }  
  107.            set { keyFieldValue = value; }  
  108.        }  
  109.  
  110.        private string levelFieldName;  
  111.        /// <summary> 
  112.        /// 層次字段名稱  
  113.        /// </summary> 
  114.        public string LevelFieldName  
  115.        {  
  116.            get { return levelFieldName; }  
  117.            set { levelFieldName = value; }  
  118.        }  
  119.  
  120.        private string levelFieldValue;  
  121.        /// <summary> 
  122.        /// 層次字段值  
  123.        /// </summary> 
  124.        public string LevelFieldValue  
  125.        {  
  126.            get { return levelFieldValue; }  
  127.            set { levelFieldValue = value; }  
  128.        }  
  129.    } 

 

//sqlserver2000存儲(chǔ)過程

 

  1. if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_gettreedata]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)  
  2. drop procedure [dbo].[sp_gettreedata]  
  3. GO  
  4.  
  5. SET QUOTED_IDENTIFIER ON   
  6. GO  
  7.  
  8. SET ANSI_NULLS ON   
  9. GO  
  10.  
  11. CREATE      PROCEDURE [dbo].[sp_gettreedata]  
  12. (@table_name nvarchar(50), @id nvarchar(50), @name nvarchar(50), @parent_id nvarchar(50), @startId  nvarchar(50), @maxlevel int)  
  13. AS  
  14.     declare @v_id nvarchar(50)  
  15.     declare @v_level int  
  16.     declare @sql nvarchar(500)  
  17.     declare @v_maxlevel int  
  18. begin  
  19.     create table #temp (id nvarchar(50),name nvarchar(50),parent_id nvarchar(50))  
  20.     create table #t1 (id nvarchar(50),name nvarchar(50),parent_id nvarchar(50),level int)  
  21.     delete from   com_temp  
  22.     set @sql='insert into #temp select '+@id+','+@name+','+@parent_id +' from '+@table_name  
  23.     exec sp_executesql @sql  
  24.  
  25.     set @v_level=1 
  26.     set @v_id=@startId  
  27.     set @v_maxlevel = @maxlevel  
  28.     insert #t1 select a.id,a.name,a.parent_id,@v_level from #temp a where a.id=@v_id  
  29.     while @@rowcount>0  
  30.     begin  
  31.         set @v_level=@v_level+1  
  32.         insert #t1 select a.id,a.name,a.parent_id,@v_level  
  33.         from #temp a where a.parent_id in  
  34.         (select id from #t1 where level=@v_level-1)  
  35.     end   
  36.     insert into Com_TEMP select a.level,a.id,a.name,a.parent_id,b.name parent_name  
  37.     from  #t1 a  left outer join #temp b  
  38.     on a.parent_id = b.id   
  39.     where a.level <= @maxlevel  
  40.     order by a.level  
  41.  
  42.     select * from Com_TEMP order by dbo.f_getidpath(id)  
  43. end  
  44.  
  45. GO  
  46. SET QUOTED_IDENTIFIER OFF   
  47. GO  
  48. SET ANSI_NULLS ON   
  49. GO 

 

//sqlserver2000函數(shù)

  1. if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_getidpath]') and xtype in (N'FN', N'IF', N'TF'))  
  2. drop function [dbo].[f_getidpath]  
  3. GO  
  4.  
  5. SET QUOTED_IDENTIFIER OFF   
  6. GO  
  7. SET ANSI_NULLS ON   
  8. GO  
  9.  
  10. CREATE      function   f_getidpath(@id   char(36))   
  11. returns   varchar(8000)   
  12. as   
  13. begin   
  14. declare   @re   varchar(8000),@pid   char(36)   
  15. set   @re=@id  
  16. select   @pid=parent_id   from   com_temp   where   id=@id   
  17. while   @@rowcount> 0   
  18. select   @re=@pid + '.'+ @re,@pid=parent_id   from   com_temp  where   id=@pid   
  19. return(@re)   
  20. end  
  21.  
  22. GO  
  23. SET QUOTED_IDENTIFIER OFF   
  24. GO  
  25. SET ANSI_NULLS ON   
  26. GO 

//數(shù)據(jù)訪問層方法

 

  1. public ComLevelDataEntity[] PrepareHierarchyData(ComLevelDataEntity entity)  
  2.         {  
  3.             System.Data.SqlClient.SqlParameter[] parameters = new System.Data.SqlClient.SqlParameter[6];  
  4.             parameters[0] = new SqlParameter();  
  5.             parameters[0].ParameterName = "@table_name";  
  6.             parameters[0].Size = 50;  
  7.             parameters[0].SqlDbType = System.Data.SqlDbType.VarChar;  
  8.             parameters[1] = new SqlParameter();  
  9.             parameters[1].ParameterName = "@id";  
  10.             parameters[1].Size = 50;  
  11.             parameters[1].SqlDbType = System.Data.SqlDbType.VarChar;  
  12.             parameters[2] = new SqlParameter();  
  13.             parameters[2].ParameterName = "@name";  
  14.             parameters[2].Size = 50;  
  15.             parameters[2].SqlDbType = System.Data.SqlDbType.VarChar;  
  16.             parameters[3] = new SqlParameter();  
  17.             parameters[3].ParameterName = "@parent_id";  
  18.             parameters[3].Size = 50;  
  19.             parameters[3].SqlDbType = System.Data.SqlDbType.VarChar;  
  20.             parameters[4] = new SqlParameter();  
  21.             parameters[4].ParameterName = "@startId";  
  22.             parameters[4].Size = 50;  
  23.             parameters[4].SqlDbType = System.Data.SqlDbType.VarChar;  
  24.             parameters[5] = new SqlParameter();  
  25.             parameters[5].ParameterName = "@maxlevel";  
  26.             parameters[5].SqlDbType = System.Data.SqlDbType.Int;  
  27.             string spName = "sp_gettreedata";  
  28.             if (entity.SearchLevel <= 0)  
  29.             {  
  30.                 parameters[0].Value = entity.DataObjectName;  
  31.                 parameters[1].Value = entity.KeyFieldName;  
  32.                 parameters[2].Value = entity.DisplayFieldName;  
  33.                 parameters[3].Value = entity.LevelFieldName;  
  34.                 parameters[4].Value = entity.KeyFieldValue;  
  35.                 parameters[5].Value = 100;  
  36.             }  
  37.             else  
  38.             {  
  39.                 parameters[0].Value = entity.DataObjectName;  
  40.                 parameters[1].Value = entity.KeyFieldName;  
  41.                 parameters[2].Value = entity.DisplayFieldName;  
  42.                 parameters[3].Value = entity.LevelFieldName;  
  43.                 parameters[4].Value = entity.KeyFieldValue;  
  44.                 parameters[5].Value = entity.SearchLevel;  
  45.             }  
  46.             List<ComLevelDataEntity> results = new List<ComLevelDataEntity>();  
  47.             IDbConnection connection = IDALProvider.IDAL.PopConnection();  
  48.             IDataReader sqlReader = IDALProvider.IDAL.ExecuteReader(connection,spName, parameters);  
  49.             while (sqlReader.Read())  
  50.             {  
  51.                 ComLevelDataEntity result = new ComLevelDataEntity();  
  52.                 if (!sqlReader.IsDBNull(0))  
  53.                     result.CascadeLevel = (int)sqlReader.GetInt32(0);  
  54.                 if (!sqlReader.IsDBNull(1))  
  55.                     result.KeyFieldValue = sqlReader.GetString(1);  
  56.                 if (!sqlReader.IsDBNull(2))  
  57.                     result.DisplayFieldValue = sqlReader.GetString(2);  
  58.                 if (!sqlReader.IsDBNull(3))  
  59.                     result.LevelFieldValue = sqlReader.GetString(3);  
  60.                 result.DataObjectName = entity.DataObjectName;  
  61.                 result.DisplayFieldName = entity.DisplayFieldName;  
  62.                 result.LevelFieldName = entity.LevelFieldName;  
  63.                 result.KeyFieldName = entity.KeyFieldName;  
  64.                 results.Add(result);  
  65.             }  
  66.             sqlReader.Close();  
  67.             IDALProvider.IDAL.PushConnection(connection);  
  68.             return results.ToArray();  
  69.         } 

 

//前端調(diào)用代碼

 

  1. ComLevelDataEntity entity = new ComLevelDataEntity();  
  2. entity.DataObjectName = "COM_DEPART";  
  3. entity.DataObjectAlias = "t";  
  4. entity.StartWithRoot = true;  
  5. entity.KeyFieldName = "id";  
  6. entity.LevelFieldName = "parent_id";  
  7. entity.DisplayFieldName = "name";  
  8. entity.KeyFieldValue = SystemLogic.CurrentUser.DATA_ORGANISE_ID;  
  9. ComLevelDataEntity[] results = IDALProvider.IDAL.PrepareHierarchyData(entity);  
  10. this.tvTree.DataSource = results;  
  11. this.tvTree.DataBind(); 

 

關(guān)于以C#為前端,SQL Server 2000層次數(shù)據(jù)查詢的實(shí)現(xiàn)方法就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!

【編輯推薦】

  1. 適合初學(xué)者的MySQL學(xué)習(xí)筆記之管理員常用操作總結(jié)
  2. 適合初學(xué)者的MySQL學(xué)習(xí)筆記之SELECT語(yǔ)句使用詳解
  3. MySQL數(shù)據(jù)庫(kù)存儲(chǔ)引擎之MyISAM和InnoDB的區(qū)別對(duì)比
  4. 適合初學(xué)者的MySQL學(xué)習(xí)筆記之ORDER BY子句使用詳解
  5. 適合初學(xué)者的MySQL學(xué)習(xí)筆記之MySQL常用命令操作技巧
責(zé)任編輯:趙鵬 來源: CSDN博客
相關(guān)推薦

2010-09-25 09:12:44

SQL Server

2009-08-05 15:17:02

NTILE函數(shù)

2010-11-10 15:23:55

SQL SERVER

2023-11-28 07:48:23

SQL Server數(shù)據(jù)庫(kù)

2011-08-22 16:23:47

SQL Server數(shù)視圖復(fù)雜的數(shù)據(jù)查詢

2009-05-26 10:21:07

2010-06-18 10:34:38

SQL Server

2010-11-08 17:13:21

SQL Server跨

2011-07-22 13:46:41

SQL Server MDAC

2011-08-23 16:23:13

OracleMySQLSQL Server

2010-06-17 17:11:03

SQL Server

2010-07-08 15:55:25

SQL Server

2011-03-30 15:36:31

SQL Server

2011-08-23 09:12:17

SQL Server多

2010-11-09 09:43:20

SQL Server查

2010-11-09 15:18:37

SQL Server多

2010-10-21 14:43:46

SQL Server查

2010-07-06 10:19:15

SQL Server層

2009-01-27 21:00:00

服務(wù)器數(shù)據(jù)庫(kù)SQL Server

2010-07-21 10:27:49

SQL Server
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)