如何使用mvc4将xml数据保存到数据库

时间:2013-04-17 08:14:50

标签: xml asp.net-mvc-3 asp.net-mvc-4 web-config

我已经创建了一个名为SeedData.xml的xml文件。

<Root>
    <User>
        <UserID>1</UserID>            
        <UserName>Admin</UserName>       
        <FirstName>Admin</FirstName>
        <LastName>Admin</LastName>
        <ShortName>Admin</ShortName>        
    </User>
</Root>

我已经在web.config中包含了这样的路径。

<appSettings>    
    <add key="myFilePath" value="D:\XmlSample\Common\SeedData.xml"/>
  </appSettings>

我需要将xml文件中的数据添加到数据库中。

我得到了xml的路径

string filePath = ConfigurationManager.AppSettings["myFilePath"];

但是如何从xml中提取值并保存在数据库中。我在谷歌中搜索了很多,但我无法找到解决方案。 请帮忙

1 个答案:

答案 0 :(得分:1)

XML是一种基于通用标记的语言,非常容易跨应用程序传输和存储数据。 .Net技术是广泛支持的XML文件格式。 .Net Framework为XML格式的文件中的读取,写入和其他操作提供了类。此外,ADO.NET中的数据集使用XML格式作为其内部存储格式。

这里我们将使用SQL Insert Command将XML文件的值插入数据库表。这里的数据集使用XmlReader来读取XML文件的内容。使用XmlReader找到XML文件,并将XmlReader作为Dataset的参数传递。还使用connectionstring建立与数据库的连接。在将数据从XML文件获取到数据集之后,我们可以遍历数据集值并使用insert命令将值添加到数据库中的表。

试试这个

 using System;
    using System.Data;
    using System.Windows.Forms;
    using System.Xml;
    using System.Data.SqlClient; 

    namespace WindowsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {
                string connetionString = null;
                SqlConnection connection;
                SqlCommand command ;
                SqlDataAdapter adpter = new SqlDataAdapter();
                DataSet ds = new DataSet();
                XmlReader xmlFile ;
                string sql = null;

                int ID = 0;
                string Name = null;
                double Price = 0;

                connetionString = "Data Source=servername;Initial Catalog=databsename;User ID=username;Password=password";

                connection = new SqlConnection(connetionString);

                xmlFile = XmlReader.Create("Xmlfile.xml", new XmlReaderSettings());
                ds.ReadXml(xmlFile);
                int i = 0;
                connection.Open();
                for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
                {
                    ID = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[0]);
                    Name = ds.Tables[0].Rows[i].ItemArray[1].ToString();
                    Price = Convert.ToDouble(ds.Tables[0].Rows[i].ItemArray[2]);
                    sql = "insert into tablenamevalues(" + ID + ",'" + Name + "'," + Price + ")";
                    command = new SqlCommand(sql, connection);
                    adpter.InsertCommand = command;
                    adpter.InsertCommand.ExecuteNonQuery();
                }
                connection.Close();
                MessageBox.Show("Done .. ");
            }
        }
    }