首先说明,因为刚学不久,很多编程知识都不了解,我只能按照我掌握的方法写。不排除有更好的方法,欢迎大家指出。一开始学习C#的同时实践一个个人博客项目。一开始把返回数据的代码写在UI层。这是我编辑自己所写文章的后台代码。代码如下,cmd_sort的reader对象返回类别表的类别信息并绑定到DDL_sort(下拉框)
cmd_art的reader对象返回当前所选文章的属性。并给下拉框和单选框设置默认选项,代码正常工作。
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["BOZConnectionString"].ConnectionString)) ;
            try
            {
                SqlCommand cmd_sort = new SqlCommand("SELECT sort FROM sort", conn);
                SqlCommand cmd_art = new SqlCommand("SELECT id, title, diary_time, sort, diary_text, heart FROM article WHERE (GUID = @GUID)", conn);
                cmd_art.Parameters.Add("@GUID", SqlDbType.UniqueIdentifier).Value = new Guid(Request.QueryString["GUID"]);
                conn.Open();
                SqlDataReader reader_sort = cmd_sort.ExecuteReader();
                while (reader_sort.Read())
                {
                    for (int index = 0; index < reader_sort.FieldCount; index++)
                    {
                        DDL_sort.Items.Add(new ListItem(reader_sort["sort"].ToString()));
                    }
                }
                reader_sort.Close();                SqlDataReader reader_art = cmd_art.ExecuteReader();
                while (reader_art.Read())
                {
                    diary_title.Text = reader_art["title"].ToString();
                    diary_daytime.Text = string.Format("{0:d}", reader_art["diary_time"]);
                    DDL_sort.Items.FindByValue(reader_art["sort"].ToString().Trim()).Selected = true;
                    RBL_heart.Items.FindByValue(reader_art["heart"].ToString().Trim()).Selected = true;
                    Editor1.Text = Server.HtmlDecode(reader_art["diary_text"].ToString());
                }
                reader_art.Close();
            }            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }            finally
            {
                conn.Close();
            }
后来学习了分层架构的思想。打算把连接代码封装进进DAL.cs里。我参照了我的一个成功案例。
        public SqlDataReader Show_Message()
        {
            SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["BOZConnectionString"].ConnectionString);
            String sto = "Select_Message";
            SqlCommand cmd = new SqlCommand(sto, con);
            cmd.CommandType = CommandType.StoredProcedure;
            con.Open();
            SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            return reader;
        }但是由于源代码有2个reader对象。如果封装到类里,只能有一个返回值,我尝试了用返回对象数组的方法。结果失败大家说这样的情况如何解决?写两个return reader的方法分别返回?效率会不会低下