Как вставить постоянное значение в столбец, используя ASP.Net SqlBulkCopy - PullRequest
6 голосов
/ 06 июля 2011

В приведенном ниже коде я пытаюсь вставить записи из Excel в таблицу базы данных, но дополнительный столбец не передается через 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);

Но код не работает.Есть идеи?

Ответы [ 3 ]

5 голосов
/ 06 июля 2011

Вы можете сделать это, изменив текст вашей команды. Как показано ниже

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);
}
4 голосов
/ 06 июля 2011

Полагаю, ваш dr какой-то читатель. Как это заселено? Может быть возможно выбрать значение по умолчанию в столбце и отобразить , что . Как то так (sql синтаксис)

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

Тогда есть:

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

НТН

0 голосов
/ 06 июля 2011

Вы пытались установить значение по умолчанию для вашего столбца в базе данных?Я думаю, что это самый простой способ, так как после вставки любой записи значение по умолчанию также будет вставлено в указанный столбец (он действует как триггеры).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...