SQLBulkCopy不会失败,但不会插入

时间:2012-05-04 14:59:41

标签: asp.net

所以我有以下代码来获取Excel文件并将其写入我的数据库中的表。

        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(以及读取文件!)所以如果我做错了,我就不会被提升。

由于

2 个答案:

答案 0 :(得分:2)

我的代码在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

答案 1 :(得分:2)

是否所有列都正确映射? “如果两者之间的列不匹配,副本就不会成功。” (来源http://www.sqlteam.com/article/use-sqlbulkcopy-to-quickly-load-data-from-your-client-to-sql-server