0

データベースから列の値を取得しようとしています ここに私のコードがあります

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>

どこが間違っていますか?

あなたの助けに感謝します。ありがとう

4

2 に答える 2

1

while(reader.Read())ループしていません。

于 2013-06-24T19:45:14.070 に答える
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();
    } 
于 2013-07-02T19:49:48.847 に答える