2009-10-02 5 views
0

나는 devart dotconnect를 통해 mysql을 사용하고있다. 위의 코드는 다중 스레드 클래스의 일부입니다.executereader 결코 반환

public void DoQuery(ref Devart.Data.MySql.MySqlDataReader Dr, string QryStr) 
     { 
      lock (locker) 
      { 
       //Program.MyMutex.WaitOne(); 
       Devart.Data.MySql.MySqlCommand Command = new Devart.Data.MySql.MySqlCommand(); 
       int ThreadID = Convert.ToInt32(Thread.CurrentThread.Name); 
       MySqlConnection FCon = Program.Con[ThreadID]; 
       if (FCon.State != System.Data.ConnectionState.Open) Program.Con[ThreadID] = Program.BuildDbConnection(); 
       Command.Connection = FCon; 
       Command.CommandTimeout = 0; 
       Command.FetchAll = true; 
       Command.CommandText = QryStr; 
       if (Dr != null) Dr.Dispose(); 
       if (QryStr.Substring(0, 6).Equals("select", StringComparison.CurrentCultureIgnoreCase) != true) Command.ExecuteNonQuery(); else Dr = Command.ExecuteReader(); this line randomly stuck on ExecuteReader. 
       Command.Dispose(); 
      } 
     } 

답변

0

나중에 처리하려면 Dr 만 전달 중입니까? 당신은 또한 데이터를 얻기 위해 독자로부터 읽어야한다.

while (reader.Read()) 
    { 
     Console.WriteLine(String.Format("{0", reader[0])); 
    } 
+0

이 메서드는 dr 호출자 메서드를 반환하므로 거기에서 사용할 수 있습니다. –

관련 문제