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 사용하기..|작성자 판다
댓글