迭代DataTable并更新SQL表

时间:2017-01-10 22:01:46

标签: c# .net datatable

在下面的语法中,我创建了一个datatable,然后使用datatable API调用的结果填充XML。完全处理List<string>数组后,我想迭代datatable并更新加入字段SQL Server 2008的{​​{1}}表。下面是我的语法,它不会抛出对我来说有任何错误,但它也没有更新SQL表。有人可以更熟练地看一看并指出我设置错误吗?

ID

修改 这是表结构,我知道在一个字段中存储日期并在另一个字段中存储时间不是很好的方法,但这是我们使用的第三方应用程序的数据结构,我们无法控制。此数据结构中列出的字段与我的更新语句中列出的字段完全相同。 static void Main(string[] args) { DataTable dt = new DataTable() dt.Columns.Add("ID", typeof(int)); dt.Columns.Add("fire",typeof(string)); dt.Columns.Add("ice",typeof(string)); dt.Columns.Add("blue",typeof(string)); dt.Columns.Add("pink",typeof(string)); dt.Columns.Add("hot",typeof(string)); dt.Columns.Add("red",typeof(string)); dt.Columns.Add("d1",typeof(DateTime)); dt.Columns.Add("t1",typeof(DateTime)); dt.Columns.Add("d2",typeof(DateTime)); dt.Columns.Add("t2",typeof(DateTime)); List<string> random = new List<string>() { "Red", "Blue", "Green", "Pink", "Hot", "Cold", "Orange" }; foreach (var abc in random) { //API Call Here that returns my variables foreach (var stinkpot in xml.Descendants("APICall")) { fire = (string)stinkpot.Descendants("A").FirstOrDefault(); ice = (string)stinkpot.Descendants("B").FirstOrDefault(); blue = (string)stinkpot.Descendants("C").FirstOrDefault(); pink = (string)stinkpot.Descendants("D").FirstOrDefault(); hot = (string)stinkpot.Descendants("E").FirstOrDefault(); red = (string)stinkpot.Descendants("F").FirstOrDefault(); d1 = (string)stinkpot.Descendants("G").FirstOrDefault(); t1 = (string)stinkpot.Descendants("H").FirstOrDefault(); d2 = (string)stinkpot.Descendants("I").FirstOrDefault(); t2 = (string)stinkpot.Descendants("J").FirstOrDefault(); //Add variables to data table dt.Rows.Add(abc, fire, ice, blue, pink, hot, red, d1, t1, d2, t2); } } //Update SQL Server Table Here foreach (DataRow dtRow in dt.Rows) { foreach(DataColumn dc in dt.Columns) { string updateCommand = "UPDATE sqltesttable SET [field1]=@fire, [field2] = @ice, [field3] = @blue, [field4] = @pink ,[field5] = @hot, [field6] = @red, [field7] = @d1, [field8] = @t1, [field9] = @d2, [field10] = @t2 WHERE ID = @id"; using (OleDbConnection conn = new OleDbConnection("csConnString")) { using (OleDbCommand comm = new OleDbCommand()) { comm.Connection = conn; comm.CommandText = updateCommand; comm.CommandType = CommandType.Text comm.Parameters.AddWithValue("@fire", dtRow[fire].ToString();) comm.Parameters.AddWithValue("@ice", dtRow[ice].ToString();) comm.Parameters.AddWithValue("@blue", dtRow[blue].ToString();) comm.Parameters.AddWithValue("@pink", dtRow[pink].ToString();) comm.Parameters.AddWithValue("@hot", dtRow[hot].ToString();) comm.Parameters.AddWithValue("@red", dtRow[red].ToString();) comm.Parameters.AddWithValue("@d1", dtRow[d1].ToString();) comm.Parameters.AddWithValue("@t1", dtRow[t1].ToString();) comm.Parameters.AddWithValue("@d2", dtRow[d2].ToString();) comm.Parameters.AddWithValue("@t2", dtRow[t2].ToString();) comm.Parameters.AddWithValue("@id", dtRow[id].ToString();) try { comm.Open(); conn.ExecuteNonQuery(); } catch(OleDbException ex) { MessageBox.Show(ex.Message.ToString()); } } } } } } 是pk自动编号字段,uqID是不是表的pk的唯一标识符。其余字段与hlpID等匹配,以field1, field2

开头
salestatus

0 个答案:

没有答案