2012-10-10 20 views
0

該程序已經編寫完成,我需要添加更新SQL語句來更新基於@IN的另一個表。在聲明SQL命令之後,我如何獲得它,我可以使用與其他sql命令相同的SQLConnection嗎?這個程序做的是在文件中解析一個名爲個人的列表,並且我只想更新SQL中的字段。第一個SQL已經寫入了一個似乎現在正確執行我需要做UpdtHasInv SQL,實際上得到執行更新的代碼是我需要幫助的地方。根據傳遞的參數在SQL表上執行更新

繼承人是我到目前爲止有:

static void InsertCustomData(Collection<Individuals> individuals) 
    { 
     #region 
     string insertsql = ""; 

     insertsql = @"Insert into IND (IND_ID, ITEM_NAME, INDL_ITEM_VALUE, XPTIM) 
         select IND_ID, '{0}' as Item, '{1}' as val, (current timestamp -  curtime)" 
         FROM IND 
         where IN = @IN"; 

    // this is SQL I added for update 
      **UpdtHasInv = @"UPDATE Ind 
         SET HAS_I = -1 
         WHERE IN = @IN";** 

     #endregion 

     using (DB2Connection conn = DB2Helper.getConnection()) 
     { 
      DB2Command cmd = conn.CreateCommand();     
      cmd.CommandTimeout = 600; 
      cmd.Parameters.Add("@IN", ""); 

      if (conn.State == ConnectionState.Closed) 
      { 
       conn.Open(); 
      } 

      foreach (Individuals individual in individuals) 
      { 
       cmd.Parameters["@IN"].Value = individual.In; 


       foreach (CustomData customData in individual.CustomData) 
       { 
        cmd.CommandText = string.Format(insertIndsql, customData.Data.Key,   customData.Data.Value); 

難道我只是寫: 'cmd.CommandText = UpdtIsInv;'這些行後:

foreach (Individuals individual in individuals) 
      { 
       cmd.Parameters["@IN"].Value = individual.in 
+0

sql-server在哪裏? – JeffO

回答

0

你可以簡單地添加你UPDATE使用分號後INSERT

insertIndsql = @" 
INSERT INTO IND (IND_ID, ITEM_NAME, INDL_ITEM_VALUE, XPTIMESTAMP) 
SELECT INDIVIDUAL_ID, '{0}' as Item, '{1}' as val, (current timestamp - curtime) 
FROM IND 
WHERE TIN = @TIN; 

UPDATE DB2INST1.Individual 
SET HAS_INVESTMENT = -1 
WHERE TIN = @TIN;"; 

執行時,兩個語句都將作爲同一命令的一部分執行。

+0

我會盡力表示感謝。 – LewSim