首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“System.IndexOutOfRangeException”找不到第12列

“System.IndexOutOfRangeException”找不到第12列
EN

Stack Overflow用户
提问于 2017-06-01 14:01:49
回答 1查看 991关注 0票数 0

错误是它找不到第12列。但我已经仔细检查了拼写与数据库中的拼写相同。我在一个小样本上试了试,就像前3列,它起作用了。但是当我尝试使用我需要上传的文件时,它给出了错误。

我该如何修复它?

代码语言:javascript
复制
DataTable dt = new DataTable();
using (OleDbConnection con = new OleDbConnection(string.Format(CSV_CONNECTIONSTRING, csvPath)))
{
    using (OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM ["+File_Name+"]", con))
    {
        da.Fill(dt);
    }
}

try
{
    using (SqlBulkCopy bulkCopy = new SqlBulkCopy(ConString))
    {
        bulkCopy.ColumnMappings.Add(0, "medicine_id");
        bulkCopy.ColumnMappings.Add(1, "category_id");
        bulkCopy.ColumnMappings.Add(2, "subcategory_id");
        bulkCopy.ColumnMappings.Add(3, "med_name");
        bulkCopy.ColumnMappings.Add(4, "brand");
        bulkCopy.ColumnMappings.Add(5, "form_id");
        bulkCopy.ColumnMappings.Add(6, "poison_schedule");
        bulkCopy.ColumnMappings.Add(7, "strength");
        bulkCopy.ColumnMappings.Add(8, "image");
        bulkCopy.ColumnMappings.Add(9, "quantity");
        bulkCopy.ColumnMappings.Add(10, "unit");
        bulkCopy.ColumnMappings.Add(11, "threshold");
        bulkCopy.ColumnMappings.Add(12, "price");
        bulkCopy.ColumnMappings.Add(13, "manufacturer");
        bulkCopy.ColumnMappings.Add(14, "special_instructions");
        bulkCopy.ColumnMappings.Add(15, "active1");
        bulkCopy.ColumnMappings.Add(16, "active1_strength");
        bulkCopy.ColumnMappings.Add(17, "active2");
        bulkCopy.ColumnMappings.Add(18, "active2_strength");
        bulkCopy.ColumnMappings.Add(19, "active3");
        bulkCopy.ColumnMappings.Add(20, "active3_strength");
        bulkCopy.ColumnMappings.Add(21, "active4");
        bulkCopy.ColumnMappings.Add(22, "active4_strength");

        bulkCopy.DestinationTableName = "medicine";
        bulkCopy.BatchSize = dt.Rows.Count;
        bulkCopy.WriteToServer(dt);
        bulkCopy.Close();
    }
}
catch (System.Exception ex)
{
    throw ex;
}
EN

回答 1

Stack Overflow用户

发布于 2017-06-02 05:59:23

在我看来,SqlBulkCopy忽略了空值,如果你要返回空值,这应该可以解决这个问题。

编辑:归功于Igor Labutin,我在发帖前没有看到他的评论。

代码语言:javascript
复制
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(ConString, SqlBulkCopyOptions.KeepNulls))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44299583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档