C# 在C中向XML表添加数据行#

C# 在C中向XML表添加数据行#,c#,xml,serialization,C#,Xml,Serialization,我正试图弄明白如何使用C#存储数据 我不熟悉C#data storage,过去曾使用PHP和MySQL做过这种事情。在做了一些研究之后,似乎应该使用XML序列化,但我不太确定所有细节 到目前为止,我已经创建了包含多个列的表: private void SerializeDataSet() { XmlSerializer ser = new XmlSerializer(typeof(DataSet)); // Creates a DataSet for user info

我正试图弄明白如何使用C#存储数据

我不熟悉C#data storage,过去曾使用PHP和MySQL做过这种事情。在做了一些研究之后,似乎应该使用XML序列化,但我不太确定所有细节

到目前为止,我已经创建了包含多个列的表:

private void SerializeDataSet()
{
    XmlSerializer ser = new XmlSerializer(typeof(DataSet));

    // Creates a DataSet for user info
    DataSet vault = new DataSet("vault");
    DataTable table_users = new DataTable("users");
    DataColumn last_name = new DataColumn("last_name");
    DataColumn first_name = new DataColumn("first_name");
    DataColumn birthdate = new DataColumn("birthdate");
    DataColumn role = new DataColumn("role");
    table_users.Columns.Add(last_name);
    table_users.Columns.Add(first_name);
    table_users.Columns.Add(birthdate);
    table_users.Columns.Add(role);

    // adds table
    vault.Tables.Add(table_users);

    // serialized table
    string filename = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Resources) + "Vault_Tec_storage";
    TextWriter writer = new StreamWriter(filename);
    ser.Serialize(writer, vault);
    writer.Close();
}

现在我不知道怎么做,实际上是将数据添加到表中。例如,如果我想要一个方法来处理John Doe的用户注册,John Doe出生于1975年10月15日,角色为“0”,我将如何进行此操作?

您可能需要尝试数据集ReadXml()

用法如下:

using (StreamReader reader = new StreamReader("C://filepath.xml"))
{
     byte[] fullByte = Encoding.ASCII.GetBytes(reader.ReadToEnd());
     DataSet dataSet = new DataSet();
     MemoryStream mStream = new MemoryStream(fullByte);
     mStream.Position = 0;
     dataSet.ReadXml(mStream);

     /*
     while DEBUGGING, you'll notice here that your `dataSet` is now populated by
     collection of tables. These table came for each sub nodes followed with an
     internal ID as relationship between nodes. From here, you may add values in 
     your table like the usage below.
     */

     // ex. if Table is like this
     // Name | Age
     // John | 09/10/2015
     DataTable dt = dataSet.Tables[0];

     dt.Rows.Add(
       // array of objects
       new object[] { "New John", "09/11/2015" }     
     );

     //OR

     DataRow dr = dt.NewRow();
     dr["Name"] = "New John";
     dr["Age"] = "09/11/2015";
     dt.Rows.Add(dr);
} 
希望这有帮助,如果你有一个具体的情况,你正在挣扎,请把它列在评论部分,我们会帮助你


谢谢

您可能需要尝试数据集ReadXml()

用法如下:

using (StreamReader reader = new StreamReader("C://filepath.xml"))
{
     byte[] fullByte = Encoding.ASCII.GetBytes(reader.ReadToEnd());
     DataSet dataSet = new DataSet();
     MemoryStream mStream = new MemoryStream(fullByte);
     mStream.Position = 0;
     dataSet.ReadXml(mStream);

     /*
     while DEBUGGING, you'll notice here that your `dataSet` is now populated by
     collection of tables. These table came for each sub nodes followed with an
     internal ID as relationship between nodes. From here, you may add values in 
     your table like the usage below.
     */

     // ex. if Table is like this
     // Name | Age
     // John | 09/10/2015
     DataTable dt = dataSet.Tables[0];

     dt.Rows.Add(
       // array of objects
       new object[] { "New John", "09/11/2015" }     
     );

     //OR

     DataRow dr = dt.NewRow();
     dr["Name"] = "New John";
     dr["Age"] = "09/11/2015";
     dt.Rows.Add(dr);
} 
希望这有帮助,如果你有一个具体的情况,你正在挣扎,请把它列在评论部分,我们会帮助你


谢谢

您可能需要尝试数据集ReadXml()

用法如下:

using (StreamReader reader = new StreamReader("C://filepath.xml"))
{
     byte[] fullByte = Encoding.ASCII.GetBytes(reader.ReadToEnd());
     DataSet dataSet = new DataSet();
     MemoryStream mStream = new MemoryStream(fullByte);
     mStream.Position = 0;
     dataSet.ReadXml(mStream);

     /*
     while DEBUGGING, you'll notice here that your `dataSet` is now populated by
     collection of tables. These table came for each sub nodes followed with an
     internal ID as relationship between nodes. From here, you may add values in 
     your table like the usage below.
     */

     // ex. if Table is like this
     // Name | Age
     // John | 09/10/2015
     DataTable dt = dataSet.Tables[0];

     dt.Rows.Add(
       // array of objects
       new object[] { "New John", "09/11/2015" }     
     );

     //OR

     DataRow dr = dt.NewRow();
     dr["Name"] = "New John";
     dr["Age"] = "09/11/2015";
     dt.Rows.Add(dr);
} 
希望这有帮助,如果你有一个具体的情况,你正在挣扎,请把它列在评论部分,我们会帮助你


谢谢

您可能需要尝试数据集ReadXml()

用法如下:

using (StreamReader reader = new StreamReader("C://filepath.xml"))
{
     byte[] fullByte = Encoding.ASCII.GetBytes(reader.ReadToEnd());
     DataSet dataSet = new DataSet();
     MemoryStream mStream = new MemoryStream(fullByte);
     mStream.Position = 0;
     dataSet.ReadXml(mStream);

     /*
     while DEBUGGING, you'll notice here that your `dataSet` is now populated by
     collection of tables. These table came for each sub nodes followed with an
     internal ID as relationship between nodes. From here, you may add values in 
     your table like the usage below.
     */

     // ex. if Table is like this
     // Name | Age
     // John | 09/10/2015
     DataTable dt = dataSet.Tables[0];

     dt.Rows.Add(
       // array of objects
       new object[] { "New John", "09/11/2015" }     
     );

     //OR

     DataRow dr = dt.NewRow();
     dr["Name"] = "New John";
     dr["Age"] = "09/11/2015";
     dt.Rows.Add(dr);
} 
希望这有帮助,如果你有一个具体的情况,你正在挣扎,请把它列在评论部分,我们会帮助你

谢谢

试试这个

private void SerializeDataSet()
        {
            // Creates a DataSet for user info
            DataSet vault = new DataSet("vault");
            DataTable table_users = new DataTable("users");
            table_users.Columns.Add("last_name", typeof(string));
            table_users.Columns.Add("first_name", typeof(string));
            table_users.Columns.Add("birthdate", typeof(DateTime));
            table_users.Columns.Add("role", typeof(int));

            // adds table
            vault.Tables.Add(table_users);
            table_users.Rows.Add(new object[] { "Doe", "John", DateTime.Parse("10/15/1975"), 0 });

            // serialized table
            string filename = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Resources) + "Vault_Tec_storage";
            vault.WriteXml(filename);
        }
试试这个

private void SerializeDataSet()
        {
            // Creates a DataSet for user info
            DataSet vault = new DataSet("vault");
            DataTable table_users = new DataTable("users");
            table_users.Columns.Add("last_name", typeof(string));
            table_users.Columns.Add("first_name", typeof(string));
            table_users.Columns.Add("birthdate", typeof(DateTime));
            table_users.Columns.Add("role", typeof(int));

            // adds table
            vault.Tables.Add(table_users);
            table_users.Rows.Add(new object[] { "Doe", "John", DateTime.Parse("10/15/1975"), 0 });

            // serialized table
            string filename = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Resources) + "Vault_Tec_storage";
            vault.WriteXml(filename);
        }
试试这个

private void SerializeDataSet()
        {
            // Creates a DataSet for user info
            DataSet vault = new DataSet("vault");
            DataTable table_users = new DataTable("users");
            table_users.Columns.Add("last_name", typeof(string));
            table_users.Columns.Add("first_name", typeof(string));
            table_users.Columns.Add("birthdate", typeof(DateTime));
            table_users.Columns.Add("role", typeof(int));

            // adds table
            vault.Tables.Add(table_users);
            table_users.Rows.Add(new object[] { "Doe", "John", DateTime.Parse("10/15/1975"), 0 });

            // serialized table
            string filename = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Resources) + "Vault_Tec_storage";
            vault.WriteXml(filename);
        }
试试这个

private void SerializeDataSet()
        {
            // Creates a DataSet for user info
            DataSet vault = new DataSet("vault");
            DataTable table_users = new DataTable("users");
            table_users.Columns.Add("last_name", typeof(string));
            table_users.Columns.Add("first_name", typeof(string));
            table_users.Columns.Add("birthdate", typeof(DateTime));
            table_users.Columns.Add("role", typeof(int));

            // adds table
            vault.Tables.Add(table_users);
            table_users.Rows.Add(new object[] { "Doe", "John", DateTime.Parse("10/15/1975"), 0 });

            // serialized table
            string filename = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Resources) + "Vault_Tec_storage";
            vault.WriteXml(filename);
        }


是否确实要将数据存储在XML文件中?像MySQL、SQLite这样的数据库引擎不是工作得更好吗?您应该看看ADO.NET框架,以及稍后更高的抽象层(如实体框架或NHibernate)。可能吧,但我不确定如何将其与我的应用程序捆绑在一起,以便用户不必下载和配置MySQL。总的来说,我对C#相当陌生,大约一年内没有做太多的开发工作。我会学习如何做到这一点,但现在这只是一个附带项目。如果您想在应用程序中捆绑一个数据库,我建议您使用SQLite,请看一些教程,这非常简单,而且在我看来比使用XML文件更容易。尝试本教程:是否确实要将数据存储在XML文件中?像MySQL、SQLite这样的数据库引擎不是工作得更好吗?您应该看看ADO.NET框架,以及稍后更高的抽象层(如实体框架或NHibernate)。可能吧,但我不确定如何将其与我的应用程序捆绑在一起,以便用户不必下载和配置MySQL。总的来说,我对C#相当陌生,大约一年内没有做太多的开发工作。我会学习如何做到这一点,但现在这只是一个附带项目。如果您想在应用程序中捆绑一个数据库,我建议您使用SQLite,请看一些教程,这非常简单,而且在我看来比使用XML文件更容易。尝试本教程:是否确实要将数据存储在XML文件中?像MySQL、SQLite这样的数据库引擎不是工作得更好吗?您应该看看ADO.NET框架,以及稍后更高的抽象层(如实体框架或NHibernate)。可能吧,但我不确定如何将其与我的应用程序捆绑在一起,以便用户不必下载和配置MySQL。总的来说,我对C#相当陌生,大约一年内没有做太多的开发工作。我会学习如何做到这一点,但现在这只是一个附带项目。如果您想在应用程序中捆绑一个数据库,我建议您使用SQLite,请看一些教程,这非常简单,而且在我看来比使用XML文件更容易。尝试本教程:是否确实要将数据存储在XML文件中?像MySQL、SQLite这样的数据库引擎不是工作得更好吗?您应该看看ADO.NET框架,以及稍后更高的抽象层(如实体框架或NHibernate)。可能吧,但我不确定如何将其与我的应用程序捆绑在一起,以便用户不必下载和配置MySQL。总的来说,我对C#相当陌生,大约一年内没有做太多的开发工作。我会学习如何做到这一点,但现在这只是一个附带项目。如果您想在应用程序中捆绑一个数据库,我建议您使用SQLite,请看一些教程,这非常简单,而且在我看来比使用XML文件更容易。尝试本教程:谢谢,我今晚将尝试。谢谢,我今晚将尝试。谢谢,我今晚将尝试。谢谢,我今晚将尝试。谢谢,我今晚将尝试。谢谢,我今晚将尝试。谢谢,我今晚将尝试。谢谢,我今晚将尝试。谢谢,我今晚将尝试。谢谢,我今晚将尝试。