100165650.htm
来自「C#高级编程(第三版),顶死你们。。 。up」· HTM 代码 · 共 199 行 · 第 1/2 页
HTM
199 行
<td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 343.15pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="458">
<p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">读取包含</span><span lang="EN-US">XDR</span><span style="FONT-FAMILY: 宋体">模式片断的文档,例如</span><span lang="EN-US">SQL Server</span><span style="FONT-FAMILY: 宋体">创建的类型</span></p>
</td>
</tr>
</tbody>
</table>
<p class="a4" style="MARGIN-LEFT: 10.7pt; WORD-BREAK: break-all; TEXT-ALIGN: right" align="right"><span lang="EN-US"> </span></p>
<table class="MsoNormalTable" style="MARGIN-LEFT: 20.2pt; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-COLLAPSE: collapse; BORDER-BOTTOM-STYLE: none" cellspacing="0" cellpadding="0" border="1">
<tbody>
<tr>
<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; BORDER-LEFT-WIDTH: 1pt; BORDER-LEFT-COLOR: windowtext; PADDING-BOTTOM: 0cm; WIDTH: 86.85pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="116">
<p class="a2"><span style="FONT-FAMILY: 黑体">选</span><span lang="EN-US"> </span><span style="FONT-FAMILY: 黑体">项</span></p>
</td>
<td style="PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 343.15pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="458">
<p class="a2"><span style="FONT-FAMILY: 黑体">说</span><span lang="EN-US"> </span><span style="FONT-FAMILY: 黑体">明</span></p>
</td>
</tr>
<tr>
<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 86.85pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT-STYLE: none" valign="top" width="116">
<p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">IgnoreSchema</span></p>
</td>
<td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 343.15pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="458">
<p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">忽略任何找到的内联模式,把数据读入当前的</span><span lang="EN-US">DataSet</span><span style="FONT-FAMILY: 宋体">模式中,如果数据与</span><span lang="EN-US">DataSet</span><span style="FONT-FAMILY: 宋体">模式不匹配,就删除它</span><span lang="EN-US"> </span></p>
</td>
</tr>
<tr>
<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 86.85pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT-STYLE: none" valign="top" width="116">
<p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">InferSchema</span></p>
</td>
<td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 343.15pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="458">
<p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -0.2pt">忽略任何内联模式,根据</span><span lang="EN-US" style="LETTER-SPACING: -0.2pt">XML</span><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -0.2pt">文档中的数据创建模式。如果</span><span lang="EN-US" style="LETTER-SPACING: -0.2pt">DataSet</span><span style="FONT-FAMILY: 宋体">中已经有一个模式,就使用该模式,如果需要,可以用其他列或表格来扩展它。如果存在一个列,但其数据类型不符,就会抛出一个异常</span></p>
</td>
</tr>
<tr>
<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 86.85pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT-STYLE: none" valign="top" width="116">
<p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">ReadSchema</span></p>
</td>
<td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 343.15pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="458">
<p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">读取内联模式,加载数据。不重写</span><span lang="EN-US">DataSet</span><span style="FONT-FAMILY: 宋体">中的模式,但如果内联模式中的表已经存在于</span><span lang="EN-US">DataSet</span><span style="FONT-FAMILY: 宋体">中,就抛出一个异常</span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 15pt"><span style="FONT-FAMILY: 宋体">这里也有</span><span lang="EN-US">ReadSchema</span><span style="FONT-FAMILY: 宋体">方法,它读取独立的模式,创建相应的表、列和关系。如果模式和数据都不在内联中,就可以使用</span><span lang="EN-US">ReadSchema</span><span style="FONT-FAMILY: 宋体">方法。该方法也有</span><span lang="EN-US">4</span><span style="FONT-FAMILY: 宋体">个重载方法:其参数分别是带有文件和路径名的字符串、基于</span><span lang="EN-US">Stream</span><span style="FONT-FAMILY: 宋体">的对象、基于</span><span lang="EN-US">TextReader</span><span style="FONT-FAMILY: 宋体">的对象和基于</span><span lang="EN-US">XmlReader</span><span style="FONT-FAMILY: 宋体">的对象。</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 15pt"><span style="FONT-FAMILY: 宋体">要说明如何正确地创建数据表,加载包含前面示例中使用的</span><span lang="EN-US">Products</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">Suppliers</span><span style="FONT-FAMILY: 宋体">表的</span><span lang="EN-US">XML</span><span style="FONT-FAMILY: 宋体">文档。但这次加载的列表框中包含</span><span lang="EN-US">DataTable</span><span style="FONT-FAMILY: 宋体">名、</span><span lang="EN-US">DataColumn</span><span style="FONT-FAMILY: 宋体">名和数据类型。可以把它与最初的</span><span lang="EN-US">Northwind</span><span style="FONT-FAMILY: 宋体">数据库比较一下,看看这些内容是否有改变。下面是我们使用的代码,包含在</span><span lang="EN-US">ADOSample5</span><span style="FONT-FAMILY: 宋体">中:</span></p>
<p class="a6" style="MARGIN-TOP: 4.9pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">private void button1</span><span lang="EN-US" style="FONT-FAMILY: 'Baskerville BE Regular'">_</span><span lang="EN-US">Click(object sender, System.EventArgs e)</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US">{</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> //create the DataSet</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> DataSet ds=new DataSet("XMLProducts");</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> //read in the XML document</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> ds.ReadXml("..\\..\\..\\SuppProd.xml");</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> //load data into grid</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> dataGrid1.DataSource=ds;</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> dataGrid1.DataMember="products";</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> //load the listbox with table, column and datatype info</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><strong><span lang="EN-US"> </span></strong><span lang="EN-US"> foreach(DataTable dt in ds.Tables)</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> {</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> listBox1.Items.Add(dt.TableName);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> foreach(DataColumn col in dt.Columns)</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> { </span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> listBox1.Items.Add(</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> '\t' + col.ColumnName + " - " + col.DataType.FullName);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> }</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> }</span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">}</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">注意添加了两个</span><span lang="EN-US">foreach</span><span style="FONT-FAMILY: 宋体">循环。第一个循环从</span><span lang="EN-US">DataSet</span><span style="FONT-FAMILY: 宋体">的表集合中获得每个表的名称,在内层的</span><span lang="EN-US">foreach</span><span style="FONT-FAMILY: 宋体">循环中,获得</span><span lang="EN-US">DataTable</span><span style="FONT-FAMILY: 宋体">中每一列的名称和数据类型。把这些数据加载到列表框中,显示它们。图</span><span lang="EN-US">23-11</span><span style="FONT-FAMILY: 宋体">是执行这段代码后所得的屏幕图。</span></p>
<p align="center"><em><span lang="EN-US"><img height="318" src="23/image011.jpg" width="249" border="0" alt="" /></span></em></p>
<p style="FTEL: 8.15pt" align="center"><span style="FONT-FAMILY: 宋体">图</span> <span lang="EN-US">23-11</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">从列表框中可以看出,</span><span lang="EN-US">DataTables</span><span style="FONT-FAMILY: 宋体">中包含的列都有正确的名称和数据类型。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">还要注意,最后的两个示例都没有在数据库中传入或传出任何数据,所以没有定义</span><span lang="EN-US">SqlDataAdapters </span><span style="FONT-FAMILY: 宋体">或</span><span lang="EN-US">SqlConnections</span><span style="FONT-FAMILY: 宋体">。这说明了</span><span lang="EN-US">System.Xml </span><span style="FONT-FAMILY: 宋体">命名空间和</span><span lang="EN-US">ADO.NET</span><span style="FONT-FAMILY: 宋体">的灵活性。可以用多种格式查看相同的数据。如果需要进行转换,以</span><span lang="EN-US">HTML</span><span style="FONT-FAMILY: 宋体">格式显示数据,或者需要把数据绑定到网格上,就应获取这些数据,用一个方法调用,把它们以需要的格式显示出来。</span></p></div>
<!-- page -->
<div class="page" style="text-align: center">
<a href="100165649.htm">上一页</a> <a href="index.html">首页</a> <a href="100165651.htm">下一页</a>
</div>
<div style="margin: 0px auto; width: 700px; border: solid 1px #0b5f98;">
<div style="float: left; width: 16px; background-color: #0b5f98; color: White; padding: 1px;">
图书导读
</div>
<div style="float: right; width: 670px; text-align: left; line-height: 16pt; padding-left: 2px">
<!--导读-->
<h1 id="divCurrentNode2" style="color: #b83507; width: 100%; text-align: left; font-size: 12px; padding-left: 2px">当前章节:<a href='100165650.htm'><font color='red'>23.8.2 把XML文档转换为 ADO.NET数据</font></a></h1>
<div id="divRealteNod2" style="padding-left: 2px">
<div style='float:left;width:49%'>·<a href='100165647.htm'>23.8 XML和ADO.NET</a></div><div style='float:right;width:49%'>·<a href='100165648.htm'>23.8.1 将ADO.NET数据转换为XML文档(1)</a></div><div style='float:left;width:49%'>·<a href='100165649.htm'>23.8.1 将ADO.NET数据转换为XML文档(2)</a></div><div style='float:right;width:49%'>·<a href='100165651.htm'>23.8.3 读写DiffGram</a></div><div style='float:left;width:49%'>·<a href='100165652.htm'>23.9 在XML中串行化对象</a></div><div style='float:right;width:49%'>·<a href='100165653.htm'>23.10 小结</a></div></div>
</div>
</div>
</div>
<!-- 评论 -->
<!-- 今日推荐 -->
</div>
<!-- 页脚 -->
<div id="foot">
<img src="../../book/readbook.aspx@node=5650&bookid=16&bookname=23.8.2++_25b0_25d1XML_25ce_25c4_25b5_25b5_25d7_25aa_25bb_25bb_25ce_25aa+ADO.NET_25ca_25fd_25be_25dd" alt="" width="0" height="0" />
<style>
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?