分享
 
 
 

一种从数据库利用xml创建树型目录的方法(C#)(一)

王朝c#·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

引言:

无线项目开发中,项目需求要对无线的服务项目追加额外参数,所以需要解析那边的xml数据(如何获得xml数据我已经在其它的文章中写过了),然后再按照一定的规律存到本地库(无线那边提供的xml数据需要通过一定的转化过程才能得到我们想要的东西)并重新构造一个xml树型目录出来。本文便要提供一种简便的方法实现从数据库生成xml文档,进而用xslt解析成树型目录的方案。

设计方案:

一、数据库

Mobile_ServiceType 服务类型

Field

DataType

Default

Description

ServiceTypeID

int

Identity

ID

ParentID

Int

0

父类型ID

MetoneServiceTypeID

Int

0

类型ID

ServiceTypeName

int

0

服务类型名称

一点说明:这个表存放的是服务类型名称及类型之间的关系的,MetoneServiceTypeID是当前信息的ID,这里没有使用ServiceTypeID 作为当前节点的ID是因为当前节点ID是不可以随便改变的,而且这个ID决定了收费标准,所以独立设定此字段的,不过从技术层面来讲设置谁为当前节点并没有什么不同,ParentID是类型的父类型ID。

二、存储过程:

/**********************************

功能:根据一定条件读取类型记录

作者:Rexsp

创建日期:2004-03-24

修改者:

修改日期:

**********************************/

ALTER PROCEDURE GetMobileServiceType

(

@Action NVARCHAR(20)='Complex',

@ServiceTypeID INT=-1,

@ServiceTypeName NVARCHAR(50)=null,

@MetoneServiceTypeID INT=-1,

@ParentID INT=-1

)

AS

SET NOCOUNT ON

IF(@Action='Complex')

BEGIN

--省略N行与本篇无关的代码

END

IF(@Action='GetTree')

BEGIN

SELECT

MetoneServiceTypeID,

ServiceTypeName,

ParentID,

URL='MobileSetting.aspx?ID='+CAST(MetoneServiceTypeID AS NVARCHAR(4))

FROM [Mobile_ServiceType]

END

一点解释:存储过程有两部分,前半部分是为了一个复杂查询设计的,后面的是构建xml树设置的。这里是通过一个@Actoin变量来控制跳入哪个部分的,另外这里的代码我简化处理了,真实环境中会根据另外一个表的设置来动态生成不同的xml树的。

三、COM层代码就列了,总体层次是三层架构,这我在专栏中也有提过。这里只给出几个相关的COM层类的接口和功能说明。

MobileServiceTypeCollection提供各种搜索条件得出的数据集,里面有一个方法,返回一个DataSet,调用的SP就是上面提供的那个:

/// <summary>

/// 获取生成美类型列表相关数据

/// </summary>

/// <param name="dataSet">类型列表数据集</param>

/// <returns>成功返回true,失败返回false;</returns>

public bool GetMetoneTree(out DataSet dataSet)

{

//创建Adapter对象

SqlDataAdapter dataAdapter = null;

//创建data对象和params

Database data = new Database("Town");

SqlParameter[] prams ={data.MakeInParam("@Action",SqlDbType.NVarChar,20,"GetTree")};

try

{

data.RunProc("GetMobileServiceType", prams, out dataAdapter);

dataSet = new DataSet();

dataAdapter.Fill(dataSet,"Tree");

dataAdapter.Dispose();

return true;

}

catch (Exception ex)

{

dataSet = null;

Error.Log("Town", ex.ToString());

return false;

}

finally

{

dataAdapter.Dispose();

data.Close();

data.Dispose();

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有