programming/ASP.NET

DataReader데이터를 ArrayList에 넣어 사용하기

KalGugSu 2008. 3. 24. 21:42

ADO.NET프로그래밍을 할때
보통 게시판드에서 게시판리스트를 뿌려줄때
소량의 데이터는 ExecuteDataSet을 호출해서 DataSet을 넘겨받아도 상관이 없겠지만
대량의 데이터를 빠른 속도로 가져오기 위해서는 DataReader를 사용하실껍니다..

이때 문제가 되는게 속도적인 부분을 일정부분 해결할 수 있지만 반대로 디비 커넥션을 그대로 잡고 있기 때문에 다른쪽에서 그 커넥션을 사용할 수 가 없습니다.

이때 디비커넥션을 재빨리 또한 정확히 풀어주는게 중요하다고 생각합니다..

이때 한가지 방법을 소개합니다..

[Profesional ADO.NET Programming  책에서 발췌한 내용입니다.]

SqlConnection conn = new SqlConnection ( "Initial Catalog=Northwind;Data Source=localhost;Integrated Security=SSPI" );
SqlCommand storedProcCommand = new SqlCommand ( "CustOrdersDetail", conn );
storedProcCommand.CommandType = CommandType.StoredProcedure;
storedProcCommand.Parameters.Add ( "@OrderID", 10248 );
conn.Open ();

ArrayList rowList = new ArrayList ();

SqlDataReader reader = storedProcCommand.ExecuteReader ( );

while ( reader.Read () )
{
   //이부분을 자세히 이해하시기 바랍니다.
     object []values = new object[ reader.FieldCount ];
     reader.GetValues ( values );
     rowList.Add ( values );
}

reader.Close ();
conn.Close ();

foreach ( object []row in rowList )
{
     foreach ( object column in row )
     Console.WriteLine ( column );
     Console.WriteLine ( "\n" );
}

넘어오는 결과값이 다중 테이블인 경우
reader.NextResult ();
사용하셔서 DataReader를 사용하는것도 고려해보시면 좋을꺼 같네요..

[출처] DataReader 사용하기..|작성자 판다