2012-04-28 75 views
0

你好,我有一個鏈接到一個SQL Compact數據庫(xxx.sdf文件),需要正確地從我datagridview和表內將其傳送數據的項目。這可能不是我應該這樣做的,但我花了幾個小時嘗試參數化一大堆查詢以單獨執行此操作(沒有成功)。我一直在閱讀文章,也許我正在尋找錯誤的東西。同步數據

我的網格綁定到tableNameBindingSource。我無法以編程方式將行添加到網格,因爲它是綁定的。我正在尋找最簡單的方法來一次添加數百行到我的SQL表,並想嘗試使用datagridview來實現這一點。

我可以(取消綁定SQL表)並根據需要添加行到datagridview表,然後強制其內容成爲數據庫表的內容?是否有某種翻譯器(我使用SQLDataAdaptor從SQL錶轉到datagridview)?

回答

2

只要你的網格視圖表(源數據)具有相同的結構(列數據類型)爲您的SQL表,你應該能夠使用SqlBulkCopy的快速複製數據。

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx

我用這個在一個相對少量的複製行100,000s。

看看這個CodeProject上和上面的鏈接:

http://www.codeproject.com/Articles/18418/Transferring-Data-Using-SqlBulkCopy

(編輯)我只注意到你說的SQLCompact。我不確定SqlBulkCopy可以與緊湊版一起使用。有一個CodePlex項目被稱爲SQLCEBulkCopy。

0

你可以只使用一個循環,然後使用INSERT查詢是否有幫助?

SqlConnection cn = new SqlConnection(your connection parameters) 
foreach (GridViewRow gvr in GridView1.Rows) 
{ 
     Label lblname = (Label)gvr.FindControl("lblname"); 
     Label lbllogin = (Label)gvr.FindControl("lbllogin"); 
     Label lblemail = (Label)gvr.FindControl("lblemail"); 
     cn.open(); 

       SqlCommand command = new SqlCommand("INSERT INTO Employee(Name,Login_Id,Email_Id) VALUES(@lblname,@lbllogin,@lblemail)", cn); 
       command.Parameters.AddWithValue("@lblname", lblname.Text.ToString()); 
       command.Parameters.AddWithValue("@lbllogin", lbllogin.Text.ToString()); 
       command.Parameters.AddWithValue("@lblemail", lblemail.Text.ToString()); 
       command.ExecuteNonQuery(); 

       cn.Close() 
} 

,並把這個代碼在按鈕單擊事件(保存按鈕或東西)

+0

確保將模板字段添加到您的GridView。 – rawatdeepesh 2013-08-21 08:54:37