2013-03-07 24 views
0

我有兩個SQL服務器(其中一人是在我的Web服務器:服務器A,另外一個是本地:服務器B)添加新行dataset.tables [i]和更新數據庫

我使用的代碼波紋管到數據上的表在SQL Server在SQL服務器B複製到另一個表: (不同的服務器&不同數據庫.. 兩個表是在列相同)

ON爲服務器A

服務器B關閉

 string strsql = "SELECT * FROM **serverA_table**"; 
     ONda = new SqlDataAdapter(strsql, ONcon); 
     ONds = new DataSet(); 
     ONda.Fill(ONds, "serverA_table"); 


     strsql = "SELECT * FROM serverB_table"; 
     OFFda = new SqlDataAdapter(strsql, OFFcon); 
     OFFds = new DataSet(); 
     OFFda.Fill(OFFds, "serverB_table"); 

     DataRow[] newRow = ONds.Tables["serverA_table"].Select(); 

     DataTable dtTarget = new DataTable(); 
     dtTarget = OFFds.Tables["serverB_table"].Clone(); 

     foreach (DataRow temp in newRow) 
     { 
      dtTarget.ImportRow(temp); 
     } 



     SqlCommandBuilder cb = new SqlCommandBuilder(OFFda); 
     OFFda.InsertCommand = cb.GetInsertCommand(); 
     OFFda.UpdateCommand = cb.GetUpdateCommand(); 
     OFFda.DeleteCommand = cb.GetDeleteCommand(); 
     OFFda.Update(OFFds.Tables["serverB_table"]); 

但沒有任何事情發生,沒有行被添加(導入)到我的serverB_table!

請幫我用這段代碼或讓我知道一個新的方法來做這個動作!

在此先感謝。

+0

我不能在您的代碼中看到任何地方打開了連接? – Derek 2013-03-07 08:50:36

+0

假設連接已打開,並且所有內容都正常工作。 – user1422847 2013-03-07 09:15:19

+0

大聲笑,那麼在這種情況下,你的代碼將工作,這篇文章將不存在;-)你需要逐行通過你的代碼,一行一行地找到錯誤到目前爲止你嘗試過什麼? – Derek 2013-03-07 09:17:07

回答

1

您必須在導入該行之前使用DataRow.SetAdded。請嘗試以下操作:

string strsql = "SELECT * FROM ServerATable"; 

using (ONcon = new SqlConnection(conString)) 
using (ONda = new SqlDataAdapter(strsql, ONcon)) 
{ 
    ONcon.Open(); 
    ONds = new DataSet(); 
    ONda.Fill(ONds, "serverA_table"); 
} 

strsql = "SELECT * FROM ServerBTable"; 

using (OFFcon = new SqlConnection(conString)) 
using (OFFda = new SqlDataAdapter(strsql, OFFcon)) 
{ 
    OFFcon.Open(); 
    OFFds = new DataSet(); 
    OFFda.Fill(OFFds, "serverB_table"); 

    DataRow[] newRow = ONds.Tables["serverA_table"].Select(); 

    foreach (DataRow temp in newRow) 
    { 
     temp.SetAdded(); 
     OFFds.Tables["serverB_table"].ImportRow(temp); 
    } 

    SqlCommandBuilder cb = new SqlCommandBuilder(OFFda); 
    OFFda.InsertCommand = cb.GetInsertCommand(); 
    OFFda.UpdateCommand = cb.GetUpdateCommand(); 
    OFFda.DeleteCommand = cb.GetDeleteCommand(); 
    OFFda.Update(OFFds.Tables["serverB_table"]); 
} 
+1

哇!令人驚歎:)雖然我不明白.SetAdded()方法的作用,但我的問題清楚地解決了。非常感謝。 – user1422847 2013-03-07 09:33:42

+0

歡迎您!保持! – 2013-03-07 09:35:08