

public SqlDataReader getAgeByDepartment(string departmentValue)
{
SqlConnection con = getConnection();
SqlCommand cmd = new SqlCommand("AgeByDepartment", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("department",SqlDbType.NVarChar,10).Value=departmentValue;
cmd.ExecuteNonQuery();
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return reader;
}


protected void Button1_Click(object sender, EventArgs e)
{
SqlDataReader reader = sql.getAgeByDepartment(DropDownList1.Text.ToString());
//reader.Read();
GridView1.DataSource = reader;
GridView1.DataBind();
reader.Close();
}
注意:在public SqlDataReader getAgeByDepartment(string departmentValue)函数内的SqlConnection方法不要使用using(SqlConnection con = getConnection())
否则调用reader的时候SqlDataReader会处于关闭状态!
CommandBehavior.CloseConnection的功能恰好就是为了避免类似的尴尬境地,它能够保证当SqlDataReader对象被关闭时,其依赖的连接也会被自动关闭。