簡體   English   中英

'System.IndexOutOfRangeException'找不到列12

[英]'System.IndexOutOfRangeException' Cannot find column 12

錯誤是找不到第12列。但是我已經仔細檢查了拼寫是否與數據庫中的拼寫相同。 我嘗試了一個只有前3列的小樣本,它起作用了。 但是,當我嘗試使用需要上傳的文件時,出現了錯誤。

我如何解決它?

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;
}

據我所見,SqlBulkCopy會忽略空值,如果您要帶回空值,這應該可以解決問題。

編輯:感謝Igor Labutin,發帖前我沒有看到他的評論。

using (SqlBulkCopy bulkCopy = new SqlBulkCopy(ConString, SqlBulkCopyOptions.KeepNulls))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM