繁体   English   中英

如何在C#Winform中填充SQL Server数据库

[英]How to fill a SQL Server database in a C# winform

我正在用C#编写Winforms应用程序,该应用程序将数据存储到Xml,然后通过电子邮件发送。 这两件事以其基本形式运行。

但是现在我在为如何将此Xml文件放入SQL Server数据库而苦苦挣扎。 我知道您可以将值作为Xml存储到SQL Server中。 但是有没有一种方法可以将Xml数据存储为intvarchar等? 还是一般来说如何处理?

提前致谢!

以下是Xml-存储功能:

private void btnWriteCustomerToXml(object sender, EventArgs e) 
{
    Customer[] Kunden = new Customer[5];
    Customer[0] = new Customer(1, "John", "A", 10000);
    Customer[1] = new Customer(2, "John", "B", 20000);
    Customer[2] = new Customer(3, "John", "C", 30000);
    Customer[3] = new Customer(4, "John", "D", 40000);
    Customer[4] = new Customer(5, "John", "E", 50000);

    using (XmlWriter writer = XmlWriter.Create("TestMail.xml"))
    {
       writer.WriteStartDocument();
       writer.WriteStartElement("Employee");

       foreach (Customer employee in Customer)
       {
           writer.WriteStartElement("Employee");
           writer.WriteElementString("ID", employee.Id.ToString());
           writer.WriteElementString("Vorname", employee.FirstName);
           writer.WriteElementString("Nachname", employee.LastName);

           writer.WriteEndElement();
       }

       writer.WriteEndElement();
       writer.WriteEndDocument();

       string output = "XML file was successfully created!";
       MessageBox.Show(output);
   }
}           

您可以使用SQL Server中的本机XQuery支持将XML“切碎”成关系数据并存储它-像这样:

-- declare input - could be the input parameter of a stored procedure or something
DECLARE @input XML = '<Employees><Employee><ID>4040</ID><Vorname>Dieter</Vorname><Nachname>Mueller</Nachname></Employee></Employees>'

-- INSERT INTO your table
INSERT INTO dbo.Employee(ID, Vorname, Nachname)
    -- shred the incoming XML into rows of data, based on the XPath /Employees/Employee
SELECT
    XEmp.value('(ID)[1]', 'int'),
    XEmp.value('(Vorname)[1]', 'varchar(50)'),
    XEmp.value('(Nachname)[1]', 'varchar(50)')
FROM 
    @input.nodes('/Employees/Employee') AS XTbl(XEmp)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM