В настоящий момент моя программа загружает файл excel через браузер на сервер. Затем этот файл excel считывается на сервере, и его значение помещается в базу данных. Проблема, которую я хочу решить, - это добавить еще один столбец, но я хочу, чтобы он был определен пользователем из браузера, и я не вижу никакого способа сделать это, потому что я использую bulkCopy.
Я хочу сделать так, чтобы пользователь мог добавлять текст в текстовое поле, например MAR12 или APR12, а затем загружать файл excel и добавлять его в каждый столбец, который заполняет файл excel. Может ли кто-нибудь помочь мне с решением. благодаря
string tableRows= "SELECT [id],[DateEntered],[User_ID] FROM [EPG$]";
string EPGTableName = "tableName"; table in the database
Здесь файл excel копируется в базу данных:
using (OleDbConnection connection = new OleDbConnection(connStr))
{
OleDbCommand command = new OleDbCommand(tableRows, connection);
connection.Open();
// Create DbDataReader to Data Worksheet
using (DbDataReader dr = command.ExecuteReader())
{
// SQL Server Connection String
string sqlConnectionString = "SERVER=<server>;UID=schafc;Trusted_Connection=Yes;DATABASE=<database>;";
// Bulk Copy to SQL Server
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString))
{
bulkCopy.DestinationTableName = tableName;
bulkCopy.WriteToServer(dr);
}
}
}
Я не уверен, как вы это сделаете с помощью DataReader, но это можно сделать с помощью DataAdapter и DataTable. Заполнение таблицы, добавление столбца (со значением по умолчанию), а затем передача таблицы в объемную копию, а не в datareader.
using (OleDbDataAdapter adapter = new OleDbDataAdapter(tableRows, connStr))
{
DataTable table = new DataTable();
adapter.Fill(table);
table.Columns.Add(new DataColumn("@ColumnName", typeof(string), string.Format("'{0}'", textboxvalue)));
// SQL Server Connection String
string sqlConnectionString = "SERVER=<server>;UID=schafc;Trusted_Connection=Yes;DATABASE=<database>;";
// Bulk Copy to SQL Server
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString))
{
bulkCopy.DestinationTableName = tableName;
bulkCopy.WriteToServer(table);
}
}