【发布时间】:2013-06-24 19:34:46
【问题描述】:
我正在尝试从数据库中检索列值,这是我的代码
protected void LoadProfile()
{
conn = new SqlConnection(connString);
cmdProfile = new SqlCommand("SELECT Name, Father, Gender, UserName, City, Country, Department, Year, Degree, JobTittle, Organization, JobCity, JobCountry, JobTittle FROM UserProfile WHERE UserName=@UserName", conn);
cmdProfile.Parameters.AddWithValue("@UserName", userName);
conn.Open();
reader = cmdProfile.ExecuteReader();
if (reader.Read())
{
labelName.Text = reader["Name"].ToString();
txtBoxFather.Text = reader["Father"].ToString();
TextBoxGender.Text = reader["Gender"].ToString();
TextBoxAge.Text = "";
TextBoxCity.Text = reader["City"].ToString();
TextBoxCountry.Text = reader["Country"].ToString();
TextBoxDepartment.Text = reader["Department"].ToString();
TextBoxDegree.Text = reader["Degree"].ToString();
TextBoxYear.Text = reader["Year"].ToString();
TextBoxJobTittle.Text = reader["JobTittle"].ToString();
TextBoxJobCity.Text = reader["JobCity"].ToString();
TextBoxJobCountry.Text = reader["JobCountry"].ToString();
TextBoxOrganization.Text = reader["Organization"].ToString();
}
conn.Close();
}
但它没有从数据库中检索任何内容。
实际上我正在使用此行将userName 参数作为来自不同页面的查询字符串
userName = Request.QueryString["Name"].ToString();
当我设置断点时,该行之后控件不会继续前进
if (reader.Read())
这是我从中获取查询字符串的页面。 .
<asp:GridView ID="GridAllAlumni" runat="server"
onitemcommand="GridAllAlumni_ItemCommand">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkname" runat="server"
Text='<%#Eval("Name") %>'
PostBackUrl='<%#"~/Profile/Profile.aspx?Name="+Eval("Name") %>'/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
我哪里错了?
您的帮助将不胜感激。谢谢
【问题讨论】:
-
什么错误?发布堆栈跟踪/异常。
-
试试 if(reader.HasRows()) -> reader.Read()
-
直接在数据库服务器上执行查询是否有效?这可能仅仅是因为查询返回零行吗?可能是因为
UserName=@UserName检查的大小写敏感?userName是您期望的吗? -
顺便说一句,它不会停止它的工作,但是a:分离 UI 和数据访问,b:使用
using将是一个非常好的主意积极地(所有conn、cmdProfile和reader都是IDisposable,并且应该使用using块) -
我认为你的最终目标还不清楚
标签: c# asp.net sqldatareader