zoukankan      html  css  js  c++  java
  • XML和关系数据将数据集映射保存到XSD架构文件

    如何将数据集映射保存到 XSD 架构文件

    此示例阐释如何将内部数据集 (DataSet) 映射保存到 XML 架构定义语言 (XSD) 架构文件中。此示例通过使用数据集上的关系方法生成映射以创建表和列。然后,该示例将这些映射的 XSD 架构表示形式写到文件中。

     
    VB SaveDataSetMapXSDSchema.aspx

    [运行示例] | [查看源代码]

    DataSet 和 XmlDataDocument 类都表示内存中的数据缓存。DataSet 提供面向关系的导航和编辑方法,而 XmlDataDocument 提供 XML 导航和编辑方法。

    此示例从 XmlDataDocument 获取 DataSet 属性,使用该属性生成一组表和列,然后填充这些表和列。然后,该示例写出内部生成的架构。

    下列示例代码生成两个表,一个用于人,另一个用于宠物。该示例使用 ID 作为每个表的主关键字,并建立人和他们的宠物之间的关系表。为此,该示例首先创建 XmlDataDocument 的一个实例,然后将与 XmlDataDocument 关联的数据集传递给 LoadDataSet 方法。

    XmlDataDocument datadoc = new XmlDataDocument();
                LoadDataSet(datadoc.DataSet);
                
    C# VB  

    LoadDataSet 方法使用关系数据加载数据集。

    // Load a DataSet with relational data
                private void LoadDataSet(DataSet dataset)
                {
                try
                {
                Console.WriteLine("Loading the DataSet ...");
                // Set DataSet name
                dataset.DataSetName = "PersonPet";
                // Create tables for people and pets
                DataTable people = new DataTable("Person");
                DataTable pets = new DataTable("Pet");
                // Set up the columns in the Tables
                DataColumn personname = new DataColumn ("Name", typeof(String));
                DataColumn personAge = new DataColumn ("Age", typeof(Int32));
                DataColumn petname = new DataColumn ("Name", typeof(String));
                DataColumn pettype = new DataColumn ("Type", typeof(String));
                // Add columns to person table
                DataColumn id = people.Columns.Add("ID", typeof(Int32));
                id.AutoIncrement = true;
                people.PrimaryKey = new DataColumn[] {id};
                people.Columns.Add (personname);
                people.Columns.Add (personAge);
                // Add columns to pet table
                id = pets.Columns.Add("ID", typeof(Int32));
                id.AutoIncrement = true;
                pets.PrimaryKey = new DataColumn[] {id};
                id.AutoIncrement = true;
                DataColumn ownerid = pets.Columns.Add("OwnerID", typeof(Int32));
                DataColumn[] foreignkey = new DataColumn[] {ownerid};
                pets.Columns.Add (petname);
                pets.Columns.Add (pettype);
                // Add tables to the DataSet
                dataset.Tables.Add (people);
                dataset.Tables.Add (pets);
                // Add people
                DataRow mark = people.NewRow();
                mark[personname] = "Mark";
                mark[personAge] = 18;
                people.Rows.Add(mark);
                DataRow william = people.NewRow();
                william[personname] = "William";
                william[personAge] = 12;
                people.Rows.Add(william);
                DataRow james = people.NewRow();
                james[personname] = "James";
                james[personAge] = 7;
                people.Rows.Add(james);
                DataRow levi = people.NewRow();
                levi[personname] = "Levi";
                levi[personAge] = 4;
                people.Rows.Add(levi);
                // Add relationships
                Console.WriteLine("Creating relationships between people and pets ...");
                DataRelation personpetrel = new DataRelation ("PersonPet",people.PrimaryKey, foreignkey);
                dataset.Relations.Add (personpetrel);
                // Add pets
                DataRow row = pets.NewRow();
                row["OwnerID"] = mark["ID"];
                row[petname] = "Frank";
                row[pettype] = "cat";
                pets.Rows.Add(row);
                row = pets.NewRow();
                row["OwnerID"] = william["ID"];
                row[petname] = "Rex";
                row[pettype] = "dog";
                pets.Rows.Add(row);
                row = pets.NewRow();
                row["OwnerID"] = james["ID"];
                row[petname] = "Cottontail";
                row[pettype] = "rabbit";
                pets.Rows.Add(row);
                row = pets.NewRow();
                row["OwnerID"] = levi["ID"];
                row[petname] = "Sid";
                row[pettype] = "snake";
                pets.Rows.Add(row);
                row = pets.NewRow();
                row["OwnerID"] = levi["ID"];
                row[petname] = "Tickles";
                row[pettype] = "spider";
                pets.Rows.Add(row);
                row = pets.NewRow();
                row["OwnerID"] = william["ID"];
                row[petname] = "Tweetie";
                row[pettype] = "canary";
                pets.Rows.Add(row);
                // commit changes
                dataset.AcceptChanges();
                }
                catch (Exception e)
                {
                Console.WriteLine("Exception: {0}", e.ToString());
                }
                }
                
    C# VB  

    DataSet 的 AcceptChanges 方法接受所有的更改,这些更改是自加载数据集以来或自上次调用 AcceptChanges 以来对数据集所做的更改。所有新的和修改过的行保持不变,移除已删除的行。有关其他 DataSet 关系方法的更多信息,请参阅如何获取 ADO.NET 的概述

    为了将架构保存到文件,该示例调用 DataSet 的 WriteXmlSchema 方法,传递表示目标文件的 StreamWriter 类。

    StreamWriter writer = null;
                try
                {
                Console.WriteLine("Writing the schema to {0} ...", mySaveSchema);
                writer = new StreamWriter(mySaveSchema);
                datadoc.DataSet.WriteXmlSchema(writer);
                }
                catch (Exception e)
                {
                Console.WriteLine("Exception: {0}", e.ToString());
                }
                finally
                {
                if (writer != null)
                writer.Close();
                }
                
    C# VB  

    下列输出显示由 DisplayTables 方法在数据集中创建的表。有关 DisplayTables 方法的更多信息,请参阅如何从 XML 推导出数据集映射。该示例将推导出的架构写到 PersonPet.xsd 文件中。

    Loading the DataSet ...
    Creating relationships between people and pets ...
    DataSet:
    PersonPet contains ...
    No of Tables: 2  Table content ...
    TableName = Person
    ---------
    Columns ...
    ID                    Name                  Age
    Number of rows = 4
    Rows ...
    0                     Mark                  18
    1                     William               12
    2                     James                 19
    3                     Levi                  4
    TableName = Pet
    ---------
    Columns ...
    ID                    OwnerID               Name                  Type
    Number of rows = 6
    Rows ...
    0                     0                     Frank                 cat
    1                     1                     Rex                   dog
    2                     2                     Cottontail            rabbit
    3                     3                     Sid                   snake
    4                     3                     Tickles               spider
    5                     1                     Tweetie               canary
    PersonPet
    Name = Mark owns
    Pet = Frank the cat
    Name = William owns
    Pet = Rex the dog
    Pet = Tweetie the canary
    Name = James owns
    Pet = Cottontail the rabbit
    Name = Levi owns
    Pet = Sid the snake
    Pet = Tickles the spider
    Writing the schema to PersonPet.xsd ...
    

    摘要

    1. WriteXmlSchema 方法将数据集中的关系数据的内部结构映射保存为 XSD 架构。
    2. XmlDataDocument 的 DataSet 属性使您能够相关地查看和管理 XML 文档中的结构化数据
  • 相关阅读:
    ModuleNotFoundError: No module named 'rest_framework_swagger'
    ModuleNotFoundError: No module named 'suit'
    HTTPS连接的前几毫秒发生了什么
    网络通信之 字节序转换原理与网络字节序、大端和小端模式
    聊聊HTTPS和SSL/TLS协议
    ECShop 调用自定义广告
    ECSHOP商城网站建设之自定义调用广告方法(二)
    https原理:证书传递、验证和数据加密、解密过程解析
    图解openssl实现私有CA
    SSL/TLS协议运行机制的概述
  • 原文地址:https://www.cnblogs.com/chorrysky/p/584524.html
Copyright © 2011-2022 走看看