0

いくつかの列を持つExcelファイルがあり、C#WinフォームのDataGridViewにインポートして、ユーザーがデータを表示および編集できるようにしました。問題は、DataGridViewのデータを使用可能なものだけを格納するSQLサーバーに格納する方法です。データベースの列..これは簡単な図です。

データベース

優れている

これは私の現在のコードです。

    private void buttonImport_Click(object sender, EventArgs e)
    {
        if (openFileDialogExcel.FileName != "Excel File")
        {
            try
            {
                System.Data.OleDb.OleDbConnection MyConnection;
                System.Data.DataSet DtSet;
                System.Data.OleDb.OleDbDataAdapter MyCommand;
                MyConnection = new System.Data.OleDb.OleDbConnection(@"provider=Microsoft.Jet.OLEDB.4.0;Data Source='"
                + openFileDialogExcel.FileName + "';Extended Properties=Excel 8.0;");
                MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Data$]", MyConnection);
                MyCommand.TableMappings.Add("Table", "Student");
                DtSet = new System.Data.DataSet();
                MyCommand.Fill(DtSet);
                dataGridView1.DataSource = DtSet.Tables[0];

                MyConnection.Close();
            }
            catch (Exception Fail)
            {
                MessageBox.Show(Fail.ToString());
            }
        }
        else
        {
            MessageBox.Show("Browse 1st");
        }
    }

そして、データを保存するためのボタンが1つあり、「性別」列を除外しています。

private void buttonSave_Click(object sender, EventArgs e)
{
    -----BLANK :(

}

前もって感謝します..

4

1 に答える 1

1

これらのデータをサーバーに挿入するだけの場合、最も最適な方法は一括操作を使用することです...

        using (SqlConnection cn = new SqlConnection(YourConnectionString))
        {
            cn.Open();
            using (SqlBulkCopy bulkCopy = new SqlBulkCopy(cn))
            {
                bulkCopy.DestinationTableName = "dbo.Student";

                try
                {
                    bulkCopy.ColumnMappings.Add("StudentID", "StudentID");
                    bulkCopy.ColumnMappings.Add("Name", "Name");
                    bulkCopy.ColumnMappings.Add("Address", "Address");

                    // Bulk write on the server
                    bulkCopy.WriteToServer(DtSet.Tables[0]);

                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }

        }
于 2012-07-23T05:50:39.613 に答える