System.Data.SqlClient.SqlDataReader
System.Data.SqlClient.SqlDataAdapter
从机制上区分:
SqlDataReader 查询数据始终是在数据库中查询,在使用该对象进行查询时connection始终处于占用状态,无法进行其它操作。
SqlDataAdapter对象在进行查询时是一次将所有的查询结果加载至内存,并关闭连接。
从具体操作上进行区分:
#region 执行sql返回一个结果集
public static DataTable ExecuteDataTable(string sqlText, params SqlParameter[] parameters)
{
using (SqlDataAdapter adapter = new SqlDataAdapter(sqlText, GetConnectionString()))
{
DataTable dt = new DataTable();
adapter.SelectCommand.Parameters.AddRange(parameters);
adapter.Fill(dt);
return dt;
}
}
#endregion
#region 使用SqlDataReader查询结果集
public static SqlDataReader ExecutreReader(String sqlText, params SqlParameter[] parameter)
{
using (SqlConnection connection = new SqlConnection(GetConnectionString()))
{
SqlCommand cmd = connection.CreateCommand();
connection.Open();
cmd.CommandText = sqlText;
cmd.Parameters.AddRange(parameter);
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return reader;
}
}
#endregion