因此,我有以下代碼來獲取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