引言:
无线项目开发中,项目需求要对无线的服务项目追加额外参数,所以需要解析那边的xml数据(如何获得xml数据
设计方案:
一、数据库
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(
FROM [Mobile_ServiceType]
END
一点解释:存储过程有两部分,前半部分是为了一个复杂查询设计的,后面的是构建xml树设置的。这里是通过一个@Actoin变量来控制跳入哪个部分的,另外这里的代码
三、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();
}
}
本文地址:http://com.8s8s.com/it/it44976.htm