0

目前我的程序正在通过浏览器将一个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);
                }
            }
        }
4

1 回答 1

1

我不确定您将如何使用 DataReader 执行此操作,但可以使用 DataAdapter 和 DataTable 来完成。填充表,添加一列(具有默认值),然后将表传递给大容量副本而不是数据读取器。

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);
    }
}
于 2012-05-16T10:21:28.973 回答