2013-06-24 2 views
0

Я пытаюсь получить значение столбцов из базы данных Вот мой кодметод SqlDataReader чтение не работает

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 [email protected]", 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> 

Где я ошибаюсь?

Ваша помощь будет оценена по достоинству. Thanx

+0

Какая ошибка? Вывести stacktrace/exception. – jAC

+0

попробуйте, если (reader.HasRows()) -> reader.Read() – Jonesopolis

+0

@JanesAbouChleih: ошибок нет, но текстовые поля остаются пустыми – user2517610

ответ

0

Это while(reader.Read()) Это не цикл.

+0

Пробовал, но не работает – user2517610

+0

Убедитесь, что есть данные. – iefpw

0

Попробуйте это. Я в основном изменил @UserName на :UserName в запросе и удалил @ в cmdProfile.Parameters.AddWithValue("@UserName", userName);. Это сработало для меня. Но, возможно, я ошибаюсь. Поэтому не стесняйтесь меня исправлять.

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(); 
    }