因此,我有以下代码来获取Excel文件并将其写入我的数据库中的表格。SQLBulkCopy不会失败,但不会插入
string target = Server.MapPath("~/Upload");
if (fupStation.HasFile)
{
fupStation.SaveAs(System.IO.Path.Combine(target, fupStation.FileName));
string connectionString = String.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;""", target + "\\" + fupStation.FileName); string query = String.Format("select * from [{0}$]", "Client Station Assignments");
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, connectionString);
DataSet dsStation = new DataSet();
dataAdapter.Fill(dsStation);
DataTable dtStation = new DataTable();
dtStation = dsStation.Tables[0];
gvOne.DataSource = dtStation;
gvOne.DataBind();
using (SqlBulkCopy s = new SqlBulkCopy(ConfigurationManager.ConnectionStrings["cnSQL"].ConnectionString))
{
s.DestinationTableName = "StationImport";
s.NotifyAfter = 100;
s.WriteToServer(dtStation);
s.Close();
}
}
所以这是问题所在。它读取文件并填充Datatable就好了(通过填充Grid来验证)我知道SQLBulkCopy代码正在被调用,但最终它没有提供任何错误,但在我的表中没有任何显示!
任何人都通过这之前呢?这是我第一次使用BulkCopy(并且也阅读文件!),所以如果我做错了什么,我不会被高估。
感谢
是否所有的列正确映射? “如果两者之间有任何不匹配的列,副本将不会成功。” (来源http://www.sqlteam.com/article/use-sqlbulkcopy-to-quickly-load-data-from-your-client-to-sql-server) –
我有一个表上的标识列,当然,不是在spressheet上。它根据我删除那列,插入时罚款。有没有办法在ID列中插入表格? – Limey
@凯文:好的,映射是解决方案!它似乎是因为我有身份列,插入发生需要映射(虽然它不奇怪,它没有给我一个错误)确保给和答复,所以我可以接受。 – Limey