[英]How to upload table data from Excel to SQL Server 2008 in C# ASP.Net
[英]C# - Updating an SQL Table from a file upload in ASP.Net
我的情况是,我有我要上传到SQL数据库和更新基于主键值(其被锁定和隐藏Excel电子表格中)的信息的Excel电子表格。 我有以下代码可用于将新条目插入数据库,但是我不确定如何使它适应UPDATE :
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
最终数据
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
感谢你给与我的帮助
我相信您将需要遍历数据读取器并测试日期值,并在发现时发布单个更新语句,例如:
while (reader.Read())
{
//test if row exists
//then Update
//else Insert
}
您已经拥有的代码提供了一种将文件加载到SQL Server的有效方法,但是没有提供任何灵活性。 您的选择是重新编写C#并一次执行一行INSERT / UPDATE,或者稍微更改您的方法并将新数据批量插入到工作表中,然后调用存储过程以从中进行实际的INSERT / UPDATE。工作表到实际表-后者将是我的建议。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.