使用datareader在标签中不显示数据

时间:2013-12-26 10:48:16

标签: c# asp.net

我是ASP.NET领域的新手,我创建了一个函数:

public void lbtitle()
{
    IDataReader dr = d.FetchDataReader("SELECT top(5) ItineraryMaster.ItinerariesId, ItineraryMaster.Title FROM ItineraryMaster WHERE ItineraryMaster.Title = '" + lbltitle.Text + "'");

    if (dr.Read())
    {
        lbltitle.Text = dr["Title"].ToString();
    }
}

代码背后是:

<asp:Label ID="Lbl_id" runat="server" Text='<%#Eval("ItinerariesId") %>' Visible="false"></asp:Label>
<asp:Label ID="lbltitle" runat="server" Text='<%# Eval("Title") %>'></asp:Label>

dr.read()功能没有取消控件。 我不知道为什么会这样。

和数据读取器代码是:

public SqlDataReader FetchDataReader(string sqlQuery)
{    
     SqlDataReader tempDataReader = (SqlDataReader) objSqlDatabase.ExecuteReader(CommandType.Text, @sqlQuery);    
     return tempDataReader;    
}

1 个答案:

答案 0 :(得分:1)

为什么你会让自己感到困惑。

使用statement完成所有任务。无需定义多个函数来实现它。这里我修改了代码。试试这个

        string connstring = ConfigurationManager.ConnectionStrings["myconnstring"].ConnectionString;
        using (SqlConnection cn = new SqlConnection(connstring))
        {
            cn.Open();
            string title = lbltitle.Text.Trim();
            string query = @"SELECT top(5) ItinerariesId, Title 
                            FROM ItineraryMaster WHERE ItineraryMaster.Title = @title";
            SqlCommand cmd = new SqlCommand(query, cn);
            cmd.Parameters.Add(new SqlParameter("@title", title));
            SqlDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                lbltitle.Text = lbltitle.Text.ToString() + "<br/>" + dr["Title"].ToString();
            }
        }