Come inserire un valore costante in una colonna utilizzando ASP.Net SqlBulkCopy

asp.net bulkinsert sqlbulkcopy

Domanda

Nel codice seguente, sto cercando di inserire i record da Excel alla tabella Database, ma una colonna aggiuntiva non viene passata attraverso l'Excel, che deve essere popolata con un valore costante (ciclo foreach con un valore diverso) assegnato dalla pagina richiesta .

string CONSTANTVALUE="Test";
bulkCopy.DestinationTableName = "TABLE NAME";
bulkCopy.ColumnMappings.Add("TABLECOLUMN1", "EXCELCOLUMN1");
bulkCopy.ColumnMappings.Add("TABLECOLUMN2", "EXCELCOLUMN2");
bulkCopy.ColumnMappings.Add("TABLECOLUMN3", CONSTANTVALUE);
bulkCopy.WriteToServer(dr);

Ma il codice non funziona. Qualche idea?

Risposta accettata

Presumo che il tuo dr sia un lettore di qualche tipo. Come è popolato? Potrebbe essere possibile selezionare un valore predefinito in una colonna e mappare questo. Qualcosa come questa (sintassi sql)

select 
    EXCELCOLUMN1, 
    EXCELCOLUMN2, 
    'ConstantValueFromPage' as EXCELCUSTOM 
from 
    sheet1

Quindi avere:

bulkCopy.ColumnMappings.Add("TABLECOLUMN3", "EXCELCUSTOM");

HTH


Risposta popolare

Puoi farlo cambiando il tuo testo di comando. Come sotto

string CONSTANTVALUE="Test";
OleDbCommand command=new OleDbCommand("select *,"+CONSTANTVALUE+" as [ConstantCol] from [sheet$]",ObleDbCon);
using (DbDataReader dr = command.ExecuteReader())
{
bulkCopy.DestinationTableName = "TABLE NAME";
bulkCopy.ColumnMappings.Add("TABLECOLUMN1", "EXCELCOLUMN1");
bulkCopy.ColumnMappings.Add("TABLECOLUMN2", "EXCELCOLUMN2");
bulkCopy.ColumnMappings.Add("TABLECOLUMN3", "ConstantCol");
bulkCopy.WriteToServer(dr);
}


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow