C# - 将数据集插入SQL表
我有一个DataSet,我用XML文件中的值填充。我想将值插入到SQL表中。我怎么做?C# - 将数据集插入SQL表
这是我如何填写我的数据集:
DataSet dataset = new DataSet();
dataset.ReadXml(xmlfile);
customer.DataSource = dataset.Tables[0];
如果你曾经打算做所有的插入,那么最简单的方法是只循环遍历DataTable
中的行,并为每行创建并执行DbCommand
。使用的特定语法取决于您使用的数据库的类型;对于SQL Server,它可能如下所示:
string sql = "INSERT INTO T (A, B, C) VALUES (@A, @B, @C)";
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
foreach (DataRow r in myTable.Rows)
{
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
cmd.Parameters.AddWithValue("@A", r["A"]);
cmd.Parameters.AddWithValue("@B", r["B"]);
cmd.Parameters.AddWithValue("@C", r["C"]);
cmd.ExecuteNonQuery();
}
}
这会掩盖许多可能的复杂因素,例如,异常处理,筛选出错误的行DataRowState
,在DataRow
上调用AcceptChanges
,使用数据库分配的值更新标识列,依此类推。在ADO.NET中有很多东西需要理解,而这些东西都是有原因的。但是,如果您要做的只是插入行,并且DataTable
中的DataColumn
对象具有Size
和AllowDbNull
的正确名称和类型以及适当的值,并且没有涉及外键关系,并且您不打算在表中存在重复的主键和现有数据的情况下,上面应该可以工作。
我的建议是创建一个存储过程,你的插入,然后创建一个遍历数据集,并设置你的存储过程的参数的方法然后执行它。
我想你需要遍历数据集并执行插入操作。
你明显可以用sproc做这件事,而你只需传递参数或LINQ。
无论哪种方式应该工作。
如何循环DataSet? – Erik 2011-04-13 15:35:11
与循环遍历数据库中的行并填充它的方式相同。 – 2011-04-13 15:51:27
简单,
只需使用DataSet.ReadXml()方法。
http://msdn.microsoft.com/en-us/library/system.data.dataset.readxml.aspx
现在,如果你的XML是从您的模式不同,那么你很可能将不得不环路,并填写您的架构特定的数据集,然后保存为需要。
我使用DataSet.ReadXml()方法填充我的DataSet。 – Erik 2011-04-13 15:40:26
这完全取决于您现有的数据访问层。
如果一个不存在我看起来更倾向于LinqtoSQL而不是使用存储过程,存储过程是更加难以管理
Thnx非常多的人,我会尝试它tommoro。 – Erik 2011-04-13 22:28:38