3

所以我有以下代码来获取一个 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();
            }

        }

所以这就是问题所在。它读取文件并很好地填充数据表(通过用它填充网格来证明)而且我知道正在调用 SQLBulkCopy 代码,但最后它没有给出任何错误,但我的表中没有任何显示!

以前有人经历过吗?这是我第一次使用 BulkCopy(以及读取文件!)所以如果我做错了什么我不会感到惊讶。

谢谢

4

2 回答 2

2

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

于 2012-05-08T07:32:13.117 回答
2

我的代码在 vb.net 中工作

请记住,数据表和 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
于 2012-05-04T15:10:37.210 回答