我有多个列的excel文件,我可以将它导入到C#Win Forms中的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 :(
}
先谢谢..
答案 0 :(得分: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);
}
}
}