Инструкция SQL «неверное имя столбца»: как построить запрос? - PullRequest
1 голос
/ 19 декабря 2011
    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 »» проблема была, идентификатор просто S29, без единой кавычки. Тем не менее, когда sql catch с ''. любая идея ??

Ответы [ 3 ]

3 голосов
/ 19 декабря 2011

Никогда НИКОГДА НИКОГДА не используйте конкатенацию строк для подстановки значений в ваши 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(); 

С вашим старым кодом, что если бы мне удалось создать идентификатор с именем ;DROP Table Survey;--?

0 голосов
/ 19 декабря 2011

Может быть, этот вам может помочь:

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();
       .............
0 голосов
/ 19 декабря 2011

попробовать:

string surveysr = "Select ShowResult from Survey where SurveyID='" + ID + "'" ;
...