Массовая вставка SQL-запроса для XML-файла
как массово вставлять XML-данные из XML-файла без повторения инструкции insert into, здесь я использую для каждого цикла.. как вставить все данные из XML-файла в SQL с помощью одного выполнения.
Что я уже пробовал:
<pre lang="c#"> protected void Button1_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection(@"user id=sa;password=ssa;database=Mohan;data source=PCTH101\PCTH101"); con.Open(); XmlDocument doc = new XmlDocument(); doc.Load("d:/mohan/CHG_829_RPT_XML_PRD_SPEC_FINAL_2015-08-17-0908.xml"); XmlNodeList nodes = doc.DocumentElement.SelectNodes("/fsxml/report/object/FSFORMULADOC"); string docid = "", funcode = "" ,description = "" ,formulacode = "",funlabel = ""; foreach (XmlNode node in nodes) { docid = node.SelectSingleNode("DOC_ID").InnerText; funcode = node.SelectSingleNode("FUNCTION_CODE").InnerText; description = node.SelectSingleNode("DOC_DESCRIPTION").InnerText; formulacode = node.SelectSingleNode("FORMULA_CODE").InnerText; funlabel = node.SelectSingleNode("FUNCTION_CODE_LABEL").InnerText; SqlCommand cmd = new SqlCommand("Insert INTO xml1(docid,funcode,description,formulacode,funlabel) values(@docid, @funcode,@description,@formulacode,@funlabel)", con); cmd.Parameters.AddWithValue("@docid", docid); cmd.Parameters.AddWithValue("@funcode", funcode); cmd.Parameters.AddWithValue("@description", description); cmd.Parameters.AddWithValue("@formulacode", formulacode); cmd.Parameters.AddWithValue("@funlabel", funlabel); cmd.ExecuteNonQuery(); Label1.Text = "Uploaded Successfully,Check database for Inserted Data's"; Label1.Visible = true; }
Tomas Takac
Для того, чтобы использовать SqlBulkCopy нужно обернуть в xml в качестве объекта IDataReader. Насколько мне известно, есть не что иное, как XmlDataReader в рамках. Вам нужно будет написать самостоятельно или использовать сторонний компонент.