永安信息网
健康
当前位置:首页 > 健康

解析.NET框架下的数据类型转化技术

发布时间:2019-09-13 20:40:46 编辑:笔名

实例介绍

下面我向大家介绍一个示例性的ASP.NET Web应用程序,该程序能从SQL Server 2000中的Northwind数据库中获取关系型数据并填充到一个DataSet对象中。该Web应用程序使用上面介绍的第三种方法同步化DataSet对象和XmlDataDocument对象,以完成从关系型数据到XML数据的转化工作。最后该Web应用程序根据一个预先编写好的XSLT文件实现从XML格式到HTML格式的数据转换,其中运用到的主要类便是XslTransform类。所以总体来看该Web应用程序并不复杂,不过它良好地体现了.NET框架下不同数据类型的转化方法和技巧,值得大家学习。

首先打开Visual Studio.Net,创建一个Visual C#的ASP.NET Web应用程序,如图1所示:

图1

接着从SQL Server 2000的Northwind数据库中获取数据并填充到一个DataSet对象中。Northwind数据库中包含了一个Suppliers表和一个Products表,它们之间存在着一对多的关系,该关系以两个表中的SupplierID列为关联键。该关系能显示每个供应商所能供应的所有产品列表,假设该Web应用程序就是要显示这些信息,那么下面就是获取DataSet对象的方法了。

private DataSet GetDataSet()

{

try

{

// 创建SqlConnection对象、两个SqlDataAdapter对象以及一个DataSet对象

SqlConnection con = new SqlConnection("server=localhost;initial catalog=Northwind;integrated security=true;");

SqlDataAdapter daSuppliers = new SqlDataAdapter("SELECT * FROM Suppliers", con);

SqlDataAdapter daProducts = new SqlDataAdapter("SELECT * FROM Products", con);

DataSet ds = new DataSet("SuppliersProductsDS");

// 打开连接,并用上面的两个SqlDataAdapter对象填充DataSet对象,最后关闭连接

con.Open();

daSuppliers.Fill(ds, "Suppliers");

daProducts.Fill(ds, "Products");

con.Close();

// 在DataSet对象中添加必要的关系,该关系是一对多类型的

ds.Relations.Add("SuppliersProducts", ds.Tables["Suppliers"].Columns["SupplierID"], ds.Tables["Products"].Columns["SupplierID"]).Nested = true;

// 返回DataSet对象

return ds;

}

catch (Exception)

{

return null;

}

}

上面的代码能将Northwind数据库中的Suppliers表和Products表的数据运用SqlDataAdapter对象的Fill()方法填充到一个DataSet对象中,然后在这两个数据表之间根据每个表中的SupplierID列建立一个一对多关系。

现在,你已经从后台数据库中获取数据并填充到DataSet对象了,不过要根据DataSet对象格式化输出结果是比较困难的,除非你使用像DataGrid那样的数据绑定控件。然而使用该类控件将使得输出结果的显示方式不富于变化,那也就可能不能满足应用程序的需求了。于是,你得先将数据格式转化为XML格式并运用XSLT技术将数据以HTML的方式显示给最终用户。所以,下面先得创建一个XSLT样式表文件。为该项目添加一个新项,如图2所示:

图2

样式表文件自身就是一个XML文件,其中包含了一个或多个XSLT模板。这些模板能根据其中的指令对源XML文件中的元素进行逐个处理并生成相应结果。编辑该样式表文件如下:

<?xml version="1.0" encoding="UTF-8" ?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="SuppliersProductsDS">

<HTML>

<HEAD>

<TITLE>XmlDataDocument Transformation!</TITLE>

</HEAD>

<STYLE>

BODY{ font-family:verdana;font-size:9pt }

TD { font-size:8pt }

</STYLE>

<BODY>

<xsl:apply-templates select="Suppliers"></xsl:apply-templates>

</BODY>

</HTML>

</xsl:template>

<xsl:template match="Suppliers">

<TABLE>

<TR><TD>

<B>

<xsl:value-of select="CompanyName"></xsl:value-of>

<xsl:value-of select="Phone"></xsl:value-of>

</B>

</TD></TR>

</TABLE>

<xsl:apply-templates select="Products"></xsl:apply-templates>

<BR></BR>

</xsl:template>

<xsl:template match="Products">

<TABLE BORDER="1">

<TR>

<TD valign="top" bgcolor="#E0E0E0">

<B>Product:</B>

</TD>

<TD valign="top">

<xsl:value-of select="ProductName"></xsl:value-of>

</TD>

</TR>

<TR>

<TD valign="top" bgcolor="#E0E0E0">

<B>QuantityPerUnit:</B>

</TD>

<TD valign="top">

<xsl:value-of select="QuantityPerUnit"></xsl:value-of>

</TD>

</TR>

<TR>

<TD valign="top" bgcolor="#E0E0E0">

<B>UnitPrice:</B>

</TD>

<TD valign="top">

<xsl:value-of select="UnitPrice"></xsl:value-of>

</TD>

</TR>

</TABLE>

</xsl:template>

</xsl:stylesheet>

最后便是根据上面创建并填充的DataSet对象创建一个新的XmlDataDocument对象,然后根据样式表文件将XML数据转换为HTML格式的数据并呈现给最终用户。XSLT转换过程涉及到三个文件:一个为源XML文件,它是被处理的对象;一个样式表文件,它是XSLT转换的工具;还有一个就是输出结果文件。XSLT转换过程运用到了XslTransform类的Load()方法和Transform()方法,其作用分别是导入样式表和进行实际的转换。下面,添加Web页面的Load事件响应函数如下:

private void Page_Load(object sender, System.EventArgs e)

{

try

{

// 根据一个已有的DataSet对象创建一个新的XmlDataDocument对象

DataSet ds = this.GetDataSet();

XmlDataDocument xdd = new XmlDataDocument(ds);

// 创建一个XslTranform对象并导入XSLT样式表文件

XslTransform xslt = new XslTransform();

xslt.Load(Server.MapPath("SuppliersProducts.xslt"));

// 进行XSLT转换并输出结果到一个流对象

MemoryStream ms = new MemoryStream();

xslt.Transform(xdd, null, ms);

ms.Seek(0, SeekOrigin.Begin);

StreamReader sr = new StreamReader(ms);

// 显示输出结果

Response.Write(sr.ReadToEnd());

}

catch (Exception) {}

}

运行该Web应用程序的结果如图3所示:

图3

总结

以上我向大家阐述了.NET框架下数据类型转化的基本方法和技巧,其中的Web应用程序从后台数据库中获取了关系型的数据并根据DataSet对象和XmlDataDocument对象的同步化原理将数据转化为了XML类型的数据,最后它还运用到了XSLT技术将XML数据以HTML的格式呈现给最终用户,所以该实例良好地体现了.NET框架下与数据转化相关的技术,不失为一个好例子。最后,希望本文能对大家有不少帮助!

查看本文来源

糖尿病胃轻瘫腹胀怎么治
三岁宝宝咳嗽
孩子发烧怎么办
小孩健脾胃的药吃什么好