2012-07-23 13 views
0

我有excel文件與幾列,我能夠將它導入到我的DataGridView在C#Win窗體中,所以用戶可以看到和編輯數據.. 問題是:如何存儲在DataGridView到SQL Server數據,在數據庫存儲唯一可用列.. 這是快速插圖..如何在DataGridView中只存儲可用的列

database

excel

這是我當前的代碼..

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 :(

} 

謝謝..

回答

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); 
       } 
      } 

     } 
+0

工作就像一個魅力..非常感謝你@ arif-eqbal .. :) – 2012-07-23 12:37:14

相關問題