我在数据库中有一个表。
id : Name : Category
--------------------
1 : jake : admin
我使用sqlbulkcopy从包含两列“Name”和“Category”的excel表中将新行插入数据库表。
现在,我有另一项要求,那就是从同一个Excel工作表中更新列Name
和Category
的值,但使用新更新的值。我的问题是,这可能吗?我只需要一种方法来更新列的值。我经历了这个参考。
update SQl table from values in excel
但我不知道如何实现它。
任何帮助或建议都将非常感激。
感谢。
使用sqlbulkcopy上传和导入excel文件的代码如下。
protected void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
FileUpload1.SaveAs(Server.MapPath("~/" + Path.GetFileName(FileUpload1.FileName)));
string file = Server.MapPath("~/"+Path.GetFileName(FileUpload1.FileName));
string constr = @"Provider=Microsoft.Jet.OLEDB.4.0;Excel 8.0; Extended Properties=HDR=Yes;IMEX=1; Data Source=" + file + ";";
using (OleDbConnection olecon = new OleDbConnection(constr))
{
OleDbCommand olecmd = new OleDbCommand("select Name, Category FROM [Sheet1$]", olecon);
olecon.Open();
using (DbDataReader dbrdr = olecmd.ExecuteReader())
{
string sqlcon = "Data Source=matty2011-PC\\SQLEXPRESS;Initial Catalog=mydb; Integrated Security=True";
using (SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(sqlcon))
{
sqlbulkcopy.ColumnMappings.Add(0, 1);
sqlbulkcopy.ColumnMappings.Add(1, 2);
sqlbulkcopy.DestinationTableName = "exceldata";
sqlbulkcopy.WriteToServer(dbrdr);
}
}
}
}
else
{
Response.Write("Please select a file for upload.!"); return;
}
}
答案 0 :(得分:0)
嗨
如果可能的话使用SSIS来解决 只需通过DTS
注意:SSIS DTS将附加现有数据