2016-08-13 3 views
2

Мне нужно получить данные с метки, которые я получил с предыдущей страницы, используя сеансы с этой метки, мне нужно использовать ее для поиска идентификатора для этих данных, например, если Label содержит слово 'IT' он должен найти свой идентификатор в базе данных D_ID = 5 код приведен нижеНужно найти идентификационный номер из базы данных с помощью строки в C#

public partial class FinalFeedback1 : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     GetDataFromSession(); 
     GetDID(); 
     AddDynamicLabels(); 
    } 

public void GetDID() 
{ 
    var connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; 
    using (SqlConnection connection = new SqlConnection(connectionString)) 
    { 
     connection.Open(); 
     SqlDataReader myReader1 = null; 
     string depart = "select D_ID from Department where D_Name= " + Label8.Text + ""; 
     SqlCommand cmd1 = new SqlCommand(depart, connection); 
     myReader1 = cmd1.ExecuteReader(); // i am getting error here "Invalid column name 'IT'" 
     while (myReader1.Read()) 
     { 
      Label9.Text = myReader1["D_ID"].ToString(); 
     } 
    } 
} 
public void AddDynamicLabels() 
{ 
    var connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; 
    using (SqlConnection connection = new SqlConnection(connectionString)) 
    { 
     connection.Open(); 
     SqlDataReader myReader2 = null; 
     string CmdString = "Select Q_ID,Question_Data FROM QuestionTable where D_ID=" + Label9.Text + ""; 
     SqlCommand cmd = new SqlCommand(CmdString, connection); 
     myReader2 = cmd.ExecuteReader(); 
     while (myReader2.Read()) 
      { 
       QID1.Text = myReader2["Q_ID"].ToString(); 
       if (QID1.Text == ("1")) 
       { 
        Question1.Text = myReader2["Question_Data"].ToString(); 
       } 
       else if (QID1.Text ==("2")) 
       { 
        Question2.Text = myReader2["Question_Data"].ToString(); 
       } 
       else if (QID1.Text == ("3")) 
       { 
        Question3.Text = myReader2["Question_Data"].ToString(); 
       } 
       else if (QID1.Text == ("4")) 
       { 
        Question4.Text = myReader2["Question_Data"].ToString(); 
       } 
       else if (QID1.Text == ("5")) 
       { 
        Question5.Text = myReader2["Question_Data"].ToString(); 
       } 
      } 
    } 
} 

private void GetDataFromSession() 
{ 
    Label2.Text = Session["SNL"].ToString(); 
    Label4.Text = Session["SNB"].ToString(); 
    Label6.Text = Session["EMPID"].ToString(); 
    Label8.Text = Session["DNAME"].ToString(); 
} 

}

+0

так что вопрос здесь? – Rahul

+0

Совет. На днях вы можете встретиться с [Bobby Tables] (http://bobby-tables.com/). – HABO

ответ

1

Измените эту строку.

string depart = "select D_ID from Department where D_Name= " + Label8.Text + "";

этой линии

string depart = "select D_ID from Department where D_Name= '" + Label8.Text + "'";

См одинарные кавычки во второй строке. Значение вашего string не в одинарных кавычках, и это причина.

EDIT: Ваш код открыт для SQL Injection Attack. Вы должны использовать SqlParameter вместо того, чтобы конкатенировать запрос.

Дополнительных чтений вы можете использовать эту ссылку: http://www.w3schools.com/sql/sql_injection.asp

+1

Ваше предложение доступно для * SQL Injection Attack *. Скорее используйте 'SqlParameter' – Rahul

+0

Я знаю это, но этот ответ решает только проблему, заданную в вопросах. Спасибо за ваше предложение. Я добавлю это в редактирование ответа. – vivek

0

Как просто как отсутствующие котировки вашего SQL.

sql-> «, где d_name = 'SomeValue'

... Так что исправление для вашего кода будет

string depart = "select D_ID from Department where D_Name= '" + Label8.Text + "'"; 
0

Изменить эту строку.

string depart = "select D_ID from Department where D_Name= " + Label8.Text + ""; 

в

string depart = "select D_ID from Department where D_Name like '" + Label8.Text + "'"; 

или более быстрый поиск

string depart = "select D_ID from Department where D_Name= '" + Label8.Text + "'"; 

или для поиска подобного изменения строки в

string depart = "select D_ID from Department where D_Name like '%" + Label8.Text + "%'"; 
Смежные вопросы