0

我有几个列的 excel 文件,我可以将它导入到 C# Win Forms 中的 DataGridView 中,以便用户可以查看和编辑数据。问题是:如何将 DataGridView 中的数据存储到仅存储可用的 sql server数据库上的列..这是快速说明..

数据库

擅长

这是我当前的代码..

    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 回答