zoukankan      html  css  js  c++  java
  • .net 利用DataSet存储为xml文件,自定义配置文

    xml文件可以作为DataSet 的一种存储方式,因此我们可以将一些自定义的数据作为若干表放入DataSet,然后将DataSet的结构和数据写入到xml文件,当需要我们存储的数据时,只用将xml的文件里的数据读入DataSet,我们只用访问DataSet的表,及及相应的行就行了.若要修改数据,只需要改变DataSet中的表里面的行,然后写回xml就行了,由于xml是作为文件存储,因此在发布程序时,只需要随程序拷贝到相应的目录就行了,

    下面是我的一个xml配置文件,建议用户不要自己编辑xml的结构,最好是用程序生成一个DataSet,里面定义若干表的信息然后写入xml中就行了,

    //已调试可以直接运行

    DataSet ds=new DataSet();
       DataTable dt=new DataTable("cfg");//表名
       DataColumn col=new DataColumn("id",typeof(long));
       col.AutoIncrement=true;//自动增长
       dt.Columns.Add(col);

       col=new DataColumn("userName",typeof(string));
       col.AllowDBNull=false;//不允许为空
       dt.Columns.Add(col);

       col=new DataColumn("age",typeof(int));
       col.DefaultValue=20;//默认值
       dt.Columns.Add(col);

       DataRow row=dt.NewRow();//添加行

       row["userName"]="hammergo";
       dt.Rows.Add(row);
      
       ds.Tables.Add(dt);

       ds.AcceptChanges();
      
       ds.WriteXml("config.xml",XmlWriteMode.WriteSchema);

    //运行后生成的xml文件内容

    <?xml version="1.0" standalone="yes"?>
    <NewDataSet>
      <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
        <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:Locale="zh-CN">
          <xs:complexType>
            <xs:choice maxOccurs="unbounded">
              <xs:element name="cfg">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="id" msdata:AutoIncrement="true" type="xs:long" minOccurs="0" />
                    <xs:element name="userName" type="xs:string" />
                    <xs:element name="age" type="xs:int" default="20" minOccurs="0" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:choice>
          </xs:complexType>
        </xs:element>
      </xs:schema>
      <cfg>
        <id>0</id>
        <userName>hammergo</userName>
        <age>20</age>
      </cfg>
    </NewDataSet>

    //读取及修改xml文件

    DataSet ds=new DataSet();
       ds.ReadXml("config.xml",XmlReadMode.ReadSchema);

       DataTable dt=ds.Tables["cfg"];//xml文件可保存一个DataSet的数据,它包括多个表

       //查找行
       DataRow []rows=dt.Select(string.Format("userName = '{0}'","hammergo"));
       if(rows.Length>0)
       {
        rows[0]["userName"]="zfking";
        rows[0].EndEdit();
       }

       //再添加一行
       DataRow row=dt.NewRow();
       row["userName"]="test";
       row["age"]=24;

       dt.Rows.Add(row);

       dt.AcceptChanges();


       //写回,覆盖的方式
       ds.WriteXml("config.xml",XmlWriteMode.WriteSchema);

    //执行后的文件

    <?xml version="1.0" standalone="yes"?>
    <NewDataSet>
      <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
        <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:Locale="zh-CN">
          <xs:complexType>
            <xs:choice maxOccurs="unbounded">
              <xs:element name="cfg">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="id" msdata:AutoIncrement="true" type="xs:long" minOccurs="0" />
                    <xs:element name="userName" type="xs:string" />
                    <xs:element name="age" type="xs:int" default="20" minOccurs="0" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:choice>
          </xs:complexType>
        </xs:element>
      </xs:schema>
      <cfg>
        <id>0</id>
        <userName>zfking</userName>
        <age>20</age>
      </cfg>
      <cfg>
        <id>1</id>
        <userName>test</userName>
        <age>24</age>
      </cfg>
    </NewDataSet>

    //这样我们读取或修改自己的配置文件是不是很方便

     

  • 相关阅读:
    display、box-sizing,position有哪些值?
    css伪类与伪元素
    HTML基础(一)——一般标签、常用标签和表格
    C#处理猜拳问题(非窗体)
    C#语言基础——结构体和枚举类型
    C#语言基础-类——string增加内容
    C#解决验证码问题
    C#ArrayList集合——小例题
    C#语言基础——特殊集合
    http请求访问响应慢问题解决的基本思路
  • 原文地址:https://www.cnblogs.com/zfking/p/506761.html
Copyright © 2011-2022 走看看