2011-12-14 3 views
0

이 mysql 행과 루핑 데이터를 루핑하고 있습니다. 그러나, 처리의 일부에서 나는 또한 같은 mysql 테이블로 업데이트하고 싶다.reader 루프 내부에서 mysql을 업데이트하는 데 문제가 있습니다.

이것은 나를 위해 작동하지 않습니다.

command.CommandText = "UPDATE outbox SET `faxpro` = 'DONE' WHERE `id` = '" + id + "'"; 
       MySqlDataReader result = command.ExecuteReader(); 

코드는

string connString = "Server=localhost;Port=3306;Database=communications;Uid=myuser;password=mypass;"; 
      MySqlConnection conn = new MySqlConnection(connString); 
      MySqlCommand command = conn.CreateCommand(); 
      command.CommandText = "SELECT * FROM outbox WHERE `faxstat` = 'Y' AND `fax` <> '' AND `faxpro` = 'PENDING'"; 


     try 
     { 

      conn.Open(); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
     } 
     MySqlDataReader reader = command.ExecuteReader(); 

     if (reader.HasRows) 
     { 

      while (reader.Read()) 
      { 
       Console.WriteLine(reader["account"].ToString()); 
       SendFax(reader["filepath"].ToString(), reader["filepath"].ToString(), reader["id"].ToString(), reader["fax"].ToString()); 
       string id = reader["id"].ToString(); 
       command.CommandText = "UPDATE outbox SET `faxpro` = 'DONE' WHERE `id` = '" + id + "'"; 
       MySqlDataReader result = command.ExecuteReader(); 

      } 
     } 
+1

* "이 기능이 작동하지 않습니다"*는 무엇을 의미합니까? Btw, 당신은'try-Catch'에서'conn.Open();을 중첩하지 말고 모든 command.ExecuteReader();를 중첩시켜야합니다. –

답변

1

나는 마지막 command.ExecuteReader()를 한 번 더 독자를 열려고 생각하지만 하나 개의 연결로 할 수 없습니다. 먼저 열린 독자를 먼저 닫은 다음이 표를 수정하십시오. 또는 command.ExecuteNonQuery() 메서드를 사용해보십시오.

+0

감사합니다. 두 번째 연결을 추가하고 업데이트에 사용했습니다. –

+0

또한 SELECT ... FOR UPDATE 문에 대한 정보를 찾으십시오. 작업에 도움이 될 수 있습니다. – Devart

관련 문제