錯誤在於它找不到第12列。但是我已經再次檢查拼寫與數據庫中的拼寫相同。我嘗試了只有前3列的小樣本,它工作。但是當我試圖使用我需要上傳的文件時,它給出了錯誤。'System.IndexOutOfRangeException'找不到列12
我該如何解決?
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;
}
如何獲得源表'dt'?它有你期望的23列嗎? – Dirk
這是我用來獲取dt DataTable的代碼dt = new DataTable(); 使用(OleDbConnection的CON =新的OleDbConnection(的String.Format(CSV_CONNECTIONSTRING,csvPath))) { 使用(OleDbDataAdapter的DA =新OleDbDataAdapter的( 「SELECT * FROM [」 + FILE_NAME + 「]」,CON)) { DA。補(DT); }' – user8090359
使用文本編輯器查看您的_File_Name_或將其作爲csv加載到Excel中。它有每列23列嗎? – Steve