Bulk Insert Data With Xml In SQL

C# Code 
  1. using System.Data.SqlClient;  
  2. using System.Xml;  
  3. SqlConnection con = new SqlConnection("Data Source=MTECH02\\MTECHDB;Initial Catalog=TESTQUERY;User ID=sa;pwd=sa@123");  
  4. SqlCommand cmd;  
  5. private void Form1_Load(object sender, EventArgs e)  
  6. {  
  7.     cmd = new SqlCommand("SELECT * FROM TestData", con);  
  8.     con.Open();  
  9.     DataTable dt = new DataTable();  
  10.     SqlDataAdapter da = new SqlDataAdapter(cmd);  
  11.     cmd.CommandType = CommandType.Text;  
  12.     da.Fill(dt);  
  13.     dataGridView1.DataSource = dt;  
  14.     con.Close();  
  15. }  
  16. private void button1_Click(object sender, EventArgs e)  
  17. {  
  18.     XmlDocument doc = new XmlDocument();  
  19.     XmlNode node = doc.CreateElement("r1");  
  20.     for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)  
  21.     {  
  22.         XmlNode element = doc.CreateElement("t");  
  23.         XmlNode nd = doc.CreateElement("rot");  
  24.         nd = doc.CreateElement("i");  
  25.         nd.InnerText = dataGridView1.Rows[i].Cells[0].Value.ToString();  
  26.         element.AppendChild(nd);  
  27.         nd = doc.CreateElement("n");  
  28.         nd.InnerText = dataGridView1.Rows[i].Cells[1].Value.ToString();  
  29.         element.AppendChild(nd);  
  30.         nd = doc.CreateElement("a");  
  31.         nd.InnerText = dataGridView1.Rows[i].Cells[2].Value.ToString();  
  32.         element.AppendChild(nd);  
  33.         node.AppendChild(element);  
  34.     }  
  35.     cmd = new SqlCommand("XMLINSERTDATA", con);  
  36.     cmd.CommandType = CommandType.StoredProcedure;  
  37.     cmd.Parameters.Add(new SqlParameter("@XMLFormat", SqlDbType.Xml)).Value = node.OuterXml.ToString();  
  38.     con.Open();  
  39.     cmd.ExecuteNonQuery();  
  40.     con.Close();  
  41.     MessageBox.Show("SAVE DATA");  
  42. }  
SQL Table Create a 2 Tsble 1 DataGridview Bind And 2nd Bulk Insert.
 
 
Sql Procedure
  1. USE[TESTQUERY]  
  2. GO  
  3. /****** Object: StoredProcedure [dbo].[XMLINSERTDATA] Script Date: 5/15/2016 7:54:07 AM ******/  
  4. SET ANSI_NULLS ON  
  5. GO  
  6. SET QUOTED_IDENTIFIER ON  
  7. GO  
  8. ALTER PROC[dbo].[XMLINSERTDATA]  
  9.     (  
  10.         @XMLFormat XMl  
  11.     )  
  12. AS  
  13. BEGIN  
  14. DECLARE @Integer int  
  15. EXEC sp_xml_preparedocument @Integer OUTPUT, @XMLFormat  
  16. SELECT ide, na, ad into# tempdata  
  17. FROM OPENXML(@Integer'r1/t')  
  18. WITH  
  19.     (  
  20.         ide int 'i',  
  21.         na varchar(50)  
  22.         'n',  
  23.         ad varchar(50)  
  24.         'a'  
  25.     )  
  26. EXEC sp_xml_removedocument @Integer  
  27. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --Insert Table-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -  
  28. INSERT INTO XMLDATA  
  29.     (  
  30.         id,  
  31.         Nam,  
  32.         Adr  
  33.     )  
  34. SELECT ide, na, ad  
  35. FROM# tempdata  
  36. --DROP TABLE# tempdata  
  37. END