Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net SQLBulkCopy不';不会失败,但不会失败;t插入_Asp.net - Fatal编程技术网

Asp.net SQLBulkCopy不';不会失败,但不会失败;t插入

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

因此,我有以下代码来获取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很好(通过填充网格证明了这一点),我知道正在调用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点。很高兴您对其进行了排序-添加我的评论作为答案;)