In this thread, there's a suggestion that after the operation, the instance of SqlDataAdapter is disposed of explicitly like so.
String connString = @"your connection string here";
String query = "select * from table";
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(query, conn);
conn.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dataTable);
conn.Close();
da.Dispose();
Is it really necessary? What about GC?