如何使用ASP.Net SqlBulkCopy将常量值插入到列中

Gan*_*sha 6 asp.net bulkinsert sqlbulkcopy

在下面的代码中,我尝试将excel中的记录插入到Database表中,但是不会通过excel传递额外的列,该列必须使用从请求的页面分配的常量值(具有不同值的foreach循环)填充.

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);
Run Code Online (Sandbox Code Playgroud)

但代码不起作用.有任何想法吗?

Ebe*_*oux 5

我假设您dr是某种类型的读者。它的人口情况如何?可以选择一个默认值到列中并映射值。像这样(sql语法)

select 
    EXCELCOLUMN1, 
    EXCELCOLUMN2, 
    'ConstantValueFromPage' as EXCELCUSTOM 
from 
    sheet1
Run Code Online (Sandbox Code Playgroud)

然后有:

bulkCopy.ColumnMappings.Add("TABLECOLUMN3", "EXCELCUSTOM");
Run Code Online (Sandbox Code Playgroud)

华泰


sur*_*ran 5

您可以通过更改命令文本来做到这一点。如下

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);
}
Run Code Online (Sandbox Code Playgroud)