C# – 从ASP.Netfile upload更新SQL表

我的情况是,我有一个Excel电子表格,我想上传到SQL数据库,并更新基于主键值(这是locking和隐藏在Excel电子表格中)的信息。 我有下面的代码,可以用来插入新的条目到数据库中,但我不知道如何适应它更新

string path = string.Concat((Server.MapPath("~/temp/" + FileUpload1.FileName))); FileUpload1.PostedFile.SaveAs(path); OleDbConnection OleDbcon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";"); OleDbCommand cmd = new OleDbCommand("select * from [Sheet1$]", OleDbcon); OleDbDataAdapter objAdapter1 = new OleDbDataAdapter(cmd); OleDbcon.Open(); DbDataReader dr = cmd.ExecuteReader(); string con_str = @"Data Source=****************mydatasource"""""""""""; SqlBulkCopy bulkInsert = new SqlBulkCopy(con_str); bulkInsert.DestinationTableName = "TableName"; bulkInsert.WriteToServer(dr); OleDbcon.Close(); 

示例数据:

 ID StartDate EndDate OrderNumber 1 01/02/2015 NULL 100 2 02/02/2015 NULL 100 3 03/02/2015 NULL 101 4 04/02/2015 NULL 102 5 05/02/2015 NULL 103 
  1. 插入数据库中的数据时,EndDate为空。
  2. 结束date被添加到Excel工作表中,然后我想要C#ASP.Net应用程序更新此信息并更新SQL表,不插入它作为一个新的行。

结束数据

 ID StartDate EndDate OrderNumber 1 01/02/2015 02/02/2015 100 2 02/02/2015 03/02/2015 100 3 03/02/2015 04/02/2015 101 4 04/02/2015 05/02/2015 102 5 05/02/2015 06/02/2015 103 

感谢你给与我的帮助

您已经拥有的代码提供了一种将文件加载到SQL Server的有效方法,但不提供任何灵活性。 你的select是重新编写你的C#,并一次执行INSERT / UPDATE一行,或者稍微改变你的方法,并将新数据bulkinsert到一个工作表,然后调用一个存储过程来执行实际的INSERT / UPDATE工作表到真正的表 – 后者将是我的build议。

我相信你将需要遍历数据阅读器,并testingdate值,当发现问题单个更新语句,例如:

  while (reader.Read()) { //test if row exists //then Update //else Insert }