Programming/.NET
DataReader 는 정방향 읽기전용 커서로서 데이터 소스로의 실제연결이 이루어진 상태에서 결과집합의 전체나 혹은 특정부분을 순환하는데 가장 성능이 좋은 것으로 알려져 있습니다.

다만 DataReader 객체는 데이터 순환이 완료되는 시점에서 Close 메소드를 통한 데이터 소스로의 연결해제가 필요하며 그렇지 않으면 서버의 연결자원을 낭비하는 결과를 가져오게 됩니다.

연결을 닫는 첫번째 절차는 Command 객체의 Execute 메소드를 호출할때 특정 특정 파라메터를 붙여 주는 방법입니다. 파라메터 값은 CommandBehavior.CloseConnection 열거값이며 이것은 DataReader 를 통해 데이터를 순환하다가 끝에 도달하는 경우 자동적으로 연결을 Close 하도록 처리할 수 있습니다. 다만 끝에 도달하기도 전에 데이터 순환을 중단하는 경우라면 수동으로 직접 Connection 객체의 Close() 메소드를 호출해야 하며 수동적으로 연결을 끊는 이런 처리가 두번째 방법에 해당됩니다.

SqlConnection MyConnection = new SqlConnection();
 
MyConnection.ConnectionString = ConfigurationManager.ConnectionStrings["new_connection"].ConnectionString;
            
SqlCommand MyCommand = new SqlCommand();
MyCommand.CommandText = "Select Top 100 * From [Person].[PersonPhone];";
MyCommand.CommandType = CommandType.Text;
MyCommand.Connection = MyConnection;
MyCommand.Connection.Open();
 
SqlDataReader MyReader = MyCommand.ExecuteReader(CommandBehavior.CloseConnection);
 
while (MyReader.Read())
    Response.Write("Phone : " + MyReader.GetString(1) + "<br />");
            
MyCommand.Dispose();
MyConnection.Dispose();
참고로 SqlCommand 의 ExecuteReader 메소드는 연결과 CommandText 에 지정한 쿼리를 실행시키는 메소드에 해당합니다.

'Programming > .NET' 카테고리의 다른 글

[ASP.NET] ADO.NET 의 네임스페이스와 클래스  (0) 2014.09.01
[ASP.NET] LinkButton  (0) 2014.08.27
[ASP.NET] DataReader  (0) 2014.08.22
[ASP.NET] 인라인 데이터 바인딩 구문  (0) 2014.08.21
[ASP.NET] LinqDataSource - 생성및 바인딩  (1) 2014.07.01
[ASP.NET] ADO.NET 기본  (3) 2014.06.26
0 0