0

現在、私のプログラムはブラウザを介してサーバーにExcelファイルをアップロードしています。次に、その Excel ファイルがサーバー上で読み取られ、その値がデータベースに配置されます。私が解決しようとしている問題は、列をもう 1 つ追加したいのですが、それをブラウザーからユーザー定義したいのですが、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 に答える