我正在从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");
}
答案 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");
}
}