Der Fehler ist, dass es Spalte 12 nicht finden kann. Aber ich habe bereits überprüft, dass die Rechtschreibung die gleiche wie die in der Datenbank ist. Ich habe versucht, eine kleine Probe wie nur die ersten 3 Spalten, es hat funktioniert. Aber als ich versuchte, die Datei zu verwenden, die ich hochladen musste, gab es den Fehler.'System.IndexOutOfRangeException' Spalte 12 kann nicht gefunden werden
Wie behebe ich es?
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;
}
Wie erhalten Sie die Quellentabelle 'dt'? Hat es die 23 Spalten, die Sie erwarten? – Dirk
Dies ist der Code, den ich verwendet habe, um dt DataTable dt = new DataTable() zu bekommen; Verwendung (OleDbConnection con = new OleDbConnection (string.Format (CSV_CONNECTIONSTRING, csvPath))) { Verwendung (OleDbDataAdapter da = new OleDbDataAdapter ("SELECT * FROM [" + File_Name + "]", con)) { da. Füllen (dt); } ' – user8090359
Betrachten Sie Ihren _File_Name_ mit einem Texteditor oder laden Sie es in Excel als CSV. Hat es für jede Zeile 23 Spalten? – Steve