2

さて、私はあなたが提案したすべてを試しましたが、問題は同じままです

簡単に教えてください:

フォーム名: <strong>AuzineForum.aspx

select * from QF を使用してデータベースからすべてのフィールドを表示する 1 つの GridView があります。

うまく機能しています。インデックスも機能しています。gridView にはボタンと onClick があります。新しいフォーム AuzineForumAnswer.aspx ..OK を開きます

AuzineForum.aspx から 1 つのレコードを選択し、AuzineForumAnswer.aspx に表示したいと思います。これは、ここhttp://stackoverflow.comでも同様です(スレッドをクリックすると、質問と回答が記載された新しいページが開きます)。前をクリックしました) ...わかりました

したがって、AuzineForum.aspx のボタンのコードは次のとおりです。

Button lb = (Button)sender;
            GridViewRow row = (GridViewRow)lb.NamingContainer;
            if (row != null)
            {
                int index = row.RowIndex; //gets the row index selected


                Label AID1 = (Label)ForumQuesView.Rows[index].FindControl("AID1");
               Label AID2 = (Label)ForumQuesView.Rows[index].FindControl("AID2");
               Label AID3 = (Label)ForumQuesView.Rows[index].FindControl("AID3");
               HyperLink Question = (HyperLink)ForumQuesView.Rows[index].FindControl("Question");
               Label Questiontags = (Label)ForumQuesView.Rows[index].FindControl("Questiontags");
               Label Askedby = (Label)ForumQuesView.Rows[index].FindControl("Askedby");


               Response.Redirect(String.Format("AuzineForumAnswer.aspx?Question=" + Question.Text + "&Questiontags=" + Questiontags.Text + "&Askedby=" + Askedby.Text + "&AID1=" + AID1.Text + "&AID2=" + AID2.Text + "&AID3=" + AID3.Text, Server.UrlEncode(Question.Text), Server.UrlEncode(Questiontags.Text), Server.UrlEncode(Askedby.Text), Server.UrlEncode(AID1.Text), Server.UrlEncode(AID2.Text), Server.UrlEncode(AID3.Text)));

精度のために非常に多くのパラメーターを渡しました......

これを実行してボタンをクリックすると、開いている AuzineForumAnswer.AuzineForumAnswerand はそのレコードを非常によく示していますが、qtags フィールドにここのタグ ( C#、GridView など) のような "#" 型のデータがあると問題が発生します。タグフィールドに「#」文字を含むデータがある場合、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」と表示され、qtags に (特殊文字 gridview sql C ) のような通常のデータがある場合は、AuzineForumAnswer. aspx を開き、エラーなしでデータを表示

AuzineForumAnswer.aspx の背後にあるコードは以下のとおりです

 protected void GetAllData()
        {
            string connection = System.Configuration.ConfigurationManager.ConnectionStrings["AuzineConnection"].ConnectionString;


            using (SqlConnection sqlconn = new SqlConnection(connection))
            {
                using (SqlCommand sqlcomm = sqlconn.CreateCommand())
                {
                   sqlcomm.CommandText = "Select * From QF where Question='" + Server.UrlDecode(Request.QueryString["Question"].ToString()) + "' And qtags='" + Server.UrlDecode(Request.QueryString["Questiontags"].ToString()) + "' And UserFullName='" + Server.UrlDecode(Request.QueryString["Askedby"].ToString()) + "' And AID1='" + Server.UrlDecode(Request.QueryString["AID1"].ToString()) + "' And AID2='" + Server.UrlDecode(Request.QueryString["AID2"].ToString()) + "' And AID3='" + Server.UrlDecode(Request.QueryString["AID3"].ToString()) + "'";

                    SqlDataAdapter sda = new SqlDataAdapter(sqlcomm);
                    DataTable dt = new DataTable();
                    sda.Fill(dt);

                    try
                    {
                        sqlconn.Open();

                        ForumQuesView.DataSource = dt;
                        ForumQuesView.DataBind();

                        ForumQuesView.AllowPaging = true;

                    }
                    catch (Exception ex)
                    {
                        Status.Text = ex.Message.ToString();
                    }
                }
            }
        }

ここで何が問題なのかわかりません qtags と question のみがユーザーが必要に応じてデータを保存できる2つのフィールドであるため、質問は text と qtags であり、すべてが char フィールドですが、データベースには問題はありませんここに文字 # の問題があります

4

2 に答える 2

0

私が知っているように、条件に # を使用してもクエリは問題ありません。

私は一瞬疑問に思います、そして私はこのクエリを試しました

Select * From QF where Question='question 1'
And qtags='tag #1';

これらのクエリは引き続きスムーズに実行され、レコードが返されます。

于 2013-10-20T05:38:11.977 に答える