Member 13049972 Ответов: 2

Как выполнить поиск по базе данных с двумя совпадающими элементами?


У меня есть таблица базы данных с двумя составными первичными ключами (например, HTML, Q1 / HTML, Q2 / HTML, Q3), в которой я могу искать определенную информацию, используя обе эти данные.

Вопрос-не вопрос
HTML Q1 abc
HTML Q2 def
HTML Q3 hhh

PHP Q1 bbb
PHP Q2 lll
PHP Q3 eee

я хочу найти HTML Q2, который является ("def")

Как я могу выполнить его, который соответствует обоим составным первичным ключам?

Что я уже пробовал:

public MOduleQuestion Search(string mcode, string qno)
       {

           MOduleQuestion MQOB = new MOduleQuestion();
           try
           {
               string sql = "select * from Module_Question where MQ_Module_Code = '" + mcode + "' && MQ_Question_No ='" + qno +"' ";
               SqlCommand cmd = new SqlCommand(sql, m_con);
               m_con.Open();

               SqlDataReader dreader = cmd.ExecuteReader();
               if (dreader.Read())
               {
                   MQOB.setModuleCode(dreader[0].ToString());
                   MQOB.setQuestionNo(Convert.ToInt16(dreader[1].ToString())); //Int
                   MQOB.setQuestion(dreader[2].ToString());
                   MQOB.setOP1(dreader[3].ToString());
                   MQOB.setOP2(dreader[4].ToString());
                   MQOB.setOP3(dreader[5].ToString());
                   MQOB.setOP4(dreader[6].ToString());
                   MQOB.setAnswer(dreader[7].ToString());

               }
               else
               {
                   MQOB.setModuleCode(null);
               }
               dreader.Close();
           }
           catch (Exception)
           {
               MessageBox.Show(" No Question Record Were Found!!");
           }
           finally
           {
               m_con.Close();
           }
           return MQOB;
       }

2 Ответов

Рейтинг:
2

CPallini

Вы должны использовать AND оператор, вместо && (незаконно в SQL, насколько я знаю) один в вашем запросе. Видеть:
Операторы SQL и и или[^].
Операторы SQL[^].


Member 13049972

спасибо за информацию братан :)

Рейтинг:
18

Karthik_Mahalingam

пробовать

string sql = "select * from Module_Question where MQ_Module_Code = @mcode and  MQ_Question_No  = @qno";
         SqlCommand cmd = new SqlCommand(sql, m_con);
        cmd.CommandType= System.Data.CommandType.Text;
        cmd.Parameters.Add("@mcode",mcode);
        cmd.Parameters.Add("@qno",qno);


Примечание: Форматирование строки sql-запроса уязвимый к SQL-инъекция[^] атаки
всегда использовать Параметризованные запросы для предотвращения атак SQL-инъекций в SQL Server[^]

Обратиться CPallini решение о том, какую ошибку вы допустили в своем коде и как ее исправить.


Member 13049972

ВАУ, КАК ОН РАБОТАЕТ ! Спасибо дружище :)

Karthik_Mahalingam

добро пожаловать, пожалуйста, проверьте мое обновленное решение.

Member 13049972

Ладно, братан!