2012-10-10 6 views
0

을 기반으로 SQL 테이블에서 업데이트 수행이 프로그램은 이미 작성되었으며 @IN을 기반으로 다른 테이블을 업데이트하기 위해 업데이트 SQL 문을 추가해야합니다. SQL 명령을 선언 한 후 excute하려면 어떻게해야합니까? 다른 SQL 명령과 동일한 SQLConnection을 사용할 수 있습니까? 이 프로그램이하는 일은 개인이라고하는 목록에 파일을 파싱하는 것입니다. 그리고 나는 단지 SQL의 필드를 업데이트하려고합니다. 첫 번째 SQL은 이미 올바르게 작성된 것 같습니다. 이제 UpdtHasInv SQL을 수행하고 실제로 업데이트를 수행하는 코드를 얻어야 도움이 필요한 부분을 얻을 수 있습니다.전달 된 매개 변수

Heres는 내가 지금까지 가지고 :

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