【发布时间】:2015-02-20 06:51:19
【问题描述】:
我正在从 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");
}
【问题讨论】:
-
您遇到了什么错误?
-
显示您的存储过程代码..
-
您正在循环数据并尝试插入每一行。此外,如果您在 SP 中使用表值参数,则必须将其 SqlDbType 设置为 System.Data.SqlDbType.Structured。查看更多关于表值参数stackoverflow.com/questions/10409576/…
-
您正在为每个 XML 节点调用存储过程 - 这真的是您想要的吗?您不打算首先加载整个XML(遍历所有节点),然后在完成后一次保存结果数据表吗??
-
执行cmd时的错误,
标签: c# sql-server