从DataTable插入到SQL Server数据库

时间:2015-02-20 06:51:20

标签: c# sql-server

我正在从XML文件加载数据并填充DataTable。然后我使用存储过程将该数据插入SQL Server。

我正在使用此代码,但在保存到数据库时无效:

private void button1_Click(object sender, EventArgs e)
{
        XmlDocument xmldoc = new XmlDocument();
        xmldoc.Load(@"D:\DBXML.xml");

        XmlElement root = xmldoc.DocumentElement;
        XmlNodeList nodes = root.SelectNodes("/students/student");

        DataTable dt = new DataTable();
        dt.Columns.Add("Nama", typeof(string));
        dt.Columns.Add("Alamat", typeof(string));

        foreach (XmlNode item in nodes)
        {
            DataRow dr = dt.NewRow();
            dr[0] = item["name"].InnerText;
            dr[1] = item["address"].InnerText;
            dt.Rows.Add(dr);

            dataGridView1.DataSource = dt;

            using (var cmd = new SqlCommand("InsertSiswa") { CommandType = CommandType.StoredProcedure })
            {
                //DataTable dt = new DataTable();
                cmd.Parameters.Add(new SqlParameter("@MyDataTable", dt));
                cmd.ExecuteNonQuery();
                MessageBox.Show("Sukses");
            }

2 个答案:

答案 0 :(得分:1)

您可以在SQL Server中使用uder-defined-table-type以更平滑的方式将DataTable插入SQL Server。

创建用户定义的表格类型Example

在过程Example

中使用用户定义的表类型

答案 1 :(得分:0)

是的,现在已经解决了, 这段代码工作:

 SqlConnection koneksi = null;
        koneksi = new SqlConnection(conn);
        koneksi.Open();

        XmlDocument xmldoc = new XmlDocument();
        xmldoc.Load(@"D:\DBXML.xml");
        XmlElement root = xmldoc.DocumentElement;
        XmlNodeList nodes = root.SelectNodes("/students/student");
        DataTable dt = new DataTable();
        dt.Columns.Add("Nama", typeof(string));
        dt.Columns.Add("Alamat", typeof(string));
        foreach (XmlNode item in nodes)
        {
            DataRow dr = dt.NewRow();
            dr[0] = item["name"].InnerText;
            dr[1] = item["address"].InnerText;
            dt.Rows.Add(dr);
            dataGridView1.DataSource = dt;



        }
        //senddtata();
        string dtout = dt.Rows[2][1].ToString();

        SqlCommand cmd = new SqlCommand("InsertSiswa",koneksi);
        cmd.CommandType = CommandType.StoredProcedure;
        {
            //DataTable dt = new DataTable();
            cmd.Parameters.Add(new SqlParameter("@mytable", dt));
            cmd.ExecuteNonQuery();
            MessageBox.Show("Sukses");

        }
    }