1
    string ID = "";
        if (Session["sID"] != null)
        {
            ID = Session["sID"].ToString();
            con.Open();

            string surveysr = "Select ShowResult from Survey where SurveyID=" + ID ;
            SqlCommand cmd2 = new SqlCommand(surveysr, con);
            SqlDataReader dr = cmd2.ExecuteReader();
           .............

与えられたエラーは「無効な列名'S29'」でした。問題は、IDが一重引用符なしのS29だけであるということでした。ただし、SQLキャッチが''である場合。何か案が??

4

3 に答える 3

3

文字列の連結を使用して、そのようなSQLクエリに値を代入することは絶対にしないでください。あなたはこれを求めている:

string ID = "";
if (Session["sID"] != null)
{
    ID = Session["sID"].ToString();
    con.Open();

    string surveysr = "Select ShowResult from Survey where SurveyID= @ID";
    SqlCommand cmd2 = new SqlCommand(surveysr, con);
    cmd2.Parameters.Add("@ID", SqlDbType.VarChar, 3).Value = ID;
    SqlDataReader dr = cmd2.ExecuteReader(); 

古いコードで、名前の付いたIDを作成できた場合はどうなります;DROP Table Survey;--か?

于 2011-12-19T02:10:22.913 に答える
0

多分これはあなたを助けることができます:

string ID = "";
    if (Session["sID"] != null)
    {
        ID = CStr(Session["sID"]).ToString();
        con.Open();

        string surveysr = "Select ShowResult from Survey where SurveyID=" + ID ;
        SqlCommand cmd2 = new SqlCommand(surveysr, con);
        SqlDataReader dr = cmd2.ExecuteReader();
       .............
于 2011-12-19T02:09:01.090 に答える
-1

試す:

string surveysr = "Select ShowResult from Survey where SurveyID='" + ID + "'" ;
于 2011-12-19T02:08:40.390 に答える