我是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;
}
答案 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();
}
}