Asp.net SQLBulkCopy不';不会失败,但不会失败;t插入
因此,我有以下代码来获取Excel文件并将其写入数据库中的表中Asp.net SQLBulkCopy不';不会失败,但不会失败;t插入,asp.net,Asp.net,因此,我有以下代码来获取Excel文件并将其写入数据库中的表中 string target = Server.MapPath("~/Upload"); if (fupStation.HasFile) { fupStation.SaveAs(System.IO.Path.Combine(target, fupStation.FileName)); string connectionString = S
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很好(通过填充网格证明了这一点),我知道正在调用SQLBulkCopy代码,但最终它没有给出错误,但我的表中没有显示任何内容
以前有人经历过吗?这是我第一次使用BulkCopy(也在读文件!),所以如果我做错了,我不会感到惊讶
谢谢我的代码在vb.net中运行 请记住,datatable和sql表需要在字段数据类型和列顺序上匹配
Using connection As SqlConnection = New SqlConnection(conn)
connection.Open()
Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(connection, SqlBulkCopyOptions.TableLock, Nothing)
bulkCopy.DestinationTableName = "TableName"
bulkCopy.BulkCopyTimeout = 60000
bulkCopy.BatchSize = 0
bulkCopy.WriteToServer(MyDataTable)
bulkCopy.Close()
End Using
connection.Close()
End Using
所有列是否都正确映射?“如果两列之间存在任何不匹配的列,则复制将不会成功。”(来源)所有列是否正确映射?“如果两个列之间存在任何不匹配的列,则复制将不会成功。”(来源)我在表上有一个标识列,当然,它不在存储表上。自从我删除了那一栏,那一栏插入的时候还不错。有什么方法可以插入到一个ID列的表中吗?@Kevin:好的,映射就是解决方案!似乎自从我有了Identity列之后,就需要映射才能进行插入(尽管奇怪的是它没有给我一个错误)确保给出并回答,以便我可以接受。同时发现电子表格的列名中不允许有数字和dcimal点。很高兴您对其进行了排序-添加我的评论作为答案;)