-1

私は最近、どのようにクエリを書くかについて質問しました、そしてありがたいことに皆さんは私に答えました(ありがとう)

私の最後の質問

私はWMLサイトで作業しているので、クエリから値を渡す必要があります(以下のコードで示されています)が、機能しませんでした。

    <%   
//this Query was provided earlier in the previous question.

        string queryString = "select st.firstname + ' ' + st.lastname,se.year, c.coursename,c.NumberOfCredits,ri.mark  from Students st inner join RegisteredIn ri on ri.StudentId=st.id inner join Semester se on se.id=ri.SemesterId inner join Courses c on c.id=se.id ";

私が見つけたがうまくいかなかった方法

         using (System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection(connectionString))
         {

            System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand(queryString, connection);

            command.Parameters.AddWithValue("@StudentId",StudentId);

                connection.Open();
                System.Data.SqlClient.SqlDataReader reader = command.ExecuteReader();
                if (reader.HasRows)
                {
                    reader.Read();
                    string _firstname = reader[0].ToString();
                    string _lastname = reader[1].ToString();
                    string _coursename = reader[2].ToString();
                    string _credits = reader[3].ToString();
                    string _mark = reader[4].ToString();

                    string url = string.Format("~/StudentInfo.aspx?StudentId={0}&firstname={1}&lastname={2}&coursename={3}&credits={4}&mark={5}", StudentId, _firstname, _lastname, _coursename, _credits, _mark);
                    Response.Redirect(url);

    %>

パラメータを受け取るページは次のようになります

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="StudentInfo.aspx.cs" Inherits="StudentInfo" %>

<wml>
    <card>



        <p><% Response.Write(Request.Params["StudentId"]);%></p>
        <p><b>firstname:</b> <% Response.Write(Request.Params["firstname"]);%></p>
        <p><b>lastname:</b> <% Response.Write(Request.Params["lastname"]);%></p>
        <p><b>coursename:</b> <% Response.Write(Request.Params["coursename"]);%></p>
       <p><b>credits:</b> <% Response.Write(Request.Params["credits"]);%></p>
        <p><b>Mark:</b> <% Response.Write(Request.Params["mark"]);%></p>

    </card>
</wml>

結果は次のようなものになります

First Semester  2010
Student : Arin Rizk

Course Name     No. of Credit      Mark
    AAA                3            65
    BBB                3            23
    CCC                3            65
    DDD                3            58
    EEE                3            70

Your GPA for this semster is 3.12

私の質問は次のとおりです。-クエリからURLに値を抽出する方法は?-WMLまたはASPで複数の値を表示するにはどうすればよいですか?(結果は複数の行と値になるため)

前もって感謝します

4

1 に答える 1

1

現在のコードは、データベースから最初の行のみを読み取ります。すべての行を読み取るには、Readerを呼び出す必要があります。次のようなループで()を読み取ります。

while(reader.Read())
{
    string _firstname = reader[0].ToString();
    string _lastname = reader[1].ToString()
    ...
}

しかし、このすべての情報をURLのパラメーターとして渡すことは、実際には良い考えではありません。どういうわけかすべての行からの結果を結合し、他のページでそれらを個々の値に分割する必要がありますが、これは私には不必要に思えます。さらに、URLの長さは通常制限されているため、クエリが数行以上を返す場合は機能しません。クエリ結果全体をURLで転送するのはなぜですか?URLで学生の識別子(または表示したいもの)だけを転送し、2ページ目にデータベースからデータを再度読み取る方が一般的です(そしてはるかに簡単です)。

更新: 私があなたを正しく理解している場合、あなたの実際の質問は、クエリ文字列のデータベースクエリの結果を別のページに渡す方法ではありませんが、ページにクエリの結果を表示したいと考えています。最初のステップは、2番目のページのフォームに適切なコントロール(Label、DataGridViewなど)を追加することです。次に、使用したコントロールに応じて、コントロールをデータソースにバインドするか、StudentInfo.aspxファイルのPage_Loadなどのメソッドで手動でコントロールにデータを追加できます。しかし、これはあなたが最初に尋ねていたものとは完全に異なるトピックなので、別の質問をすることをお勧めします。また、このトピックはここで何度も議論されたので、最初にこれらの質問を見てください。

于 2012-04-16T18:01:26.887 に答える