DataSet을 사용하여 비동기 DB 연결 메서드를 구현해야하므로 먼저 SqlDataReader를 사용하여 DataSet을 채우려고했습니다. 그러나 너무 많은 시간이 걸립니다. 나는이 두 가지 방법은 정확히 같은 일을 생각 DataTable.Load()가 SqlDataAdapter.Fill()에 비해 너무 많은 시간이 걸립니다.
DataSet ds = new DataSet();
using (SqlConnection conn = new SqlConnection(conString))
{
...
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = cmd;
adapter.Fill(ds);
}
SqlDataAdapter.Fill
를 사용 DataTable.Load 을DataSet ds = new DataSet();
using (SqlConnection conn = new SqlConnection(conString)
{
SqlCommand cmd = new Sqlcommand(query, conn);
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (!reader.IsClosed)
{
DataTable dt = new DataTable();
dt.BeginLoadData();
//////////////////////////////////////
dt.Load(reader); // takes too much
//////////////////////////////////////
dt.EndLoadData();
ds.Tables.Add(dt);
}
}
사용
:
여기에 코드입니다. 그러나 DB에서 2400 행을 읽을 때 첫 번째 방법은 평균 20ms가 걸리고, 그렇지 않으면 두 번째 방법은 7ms 걸립니다.
내가 놓친 것이 있습니까? 아니면 코드가 잘못 되었습니까?
코드는가 ExecuteReader의 결과 때문에 위의 한 (같은이어야한다) 할 수있다 여러 테이블이 있습니다. 어쨌든 나는 너와 같이 해봤지만 그 결과는 똑같다. dt.Load()는 adapter.Fill()보다 훨씬 오래 걸린다. –