Sqlcommand AND, кажется, игнорирует первый параметр - PullRequest
0 голосов
/ 04 февраля 2019

Когда я использую AND в моем коде sqlcommand, он следует только за последним битом

        SqlCommand^ FinArstiCmd = gcnew SqlCommand("SELECT * FROM ARSTI1 WHERE SLIMID=' 
        @SlimuID ' AND UNIQJOBID=' @JobID ';", con);

        FinArstiCmd->Parameters->Add("@SlimuID", SqlDbType::VarChar);
        FinArstiCmd->Parameters->Add("@JobID", SqlDbType::VarChar);
        FinArstiCmd->Parameters["@SlimuID"]->Value = SlimId1;
        FinArstiCmd->Parameters["@JobID"]->Value = JobID1;


        SqlDataReader^ FinArstRead;

        try {
            con->Open();

            String^ ArstaVards;
            FinArstRead = FinArstiCmd->ExecuteReader();

            while (FinArstRead->Read()){
                ArstaVards = FinArstRead["FULL_NAME"]->ToString();
                listBox1->Items->Add(ArstaVards);

            }
            con->Close();
        }
        catch (Exception^ ex) {
            MessageBox::Show(ex->Message);
        }

, когда я использую код выше, он выводит каждую строку в базе данных, которая имеет только правильный @jobid, а не те, которыеоба параметра верны

1 Ответ

0 голосов
/ 04 февраля 2019

Честно говоря, я не совсем уверен, почему ваши видимые строки вообще возвращаются (кроме тех, у которых есть записи, где SLIMID - это буквально значение @SlimuID, а UNIQJOBID - @JobID).Действительно ли это код, который вы используете, или какой-то макетный пример?

В любом случае параметры не должны заключаться в кавычки:

    SqlCommand^ FinArstiCmd = gcnew SqlCommand("SELECT * FROM ARSTI1 WHERE SLIMID=' 
    @SlimuID ' AND UNIQJOBID=' @JobID ';", con);

Таким образом, SQL-анализатор думает, что вы ищетефактическое значение @SlimuID столбца SLIMID.

Правильно:

    SqlCommand^ FinArstiCmd = gcnew SqlCommand("SELECT * FROM ARSTI1 WHERE SLIMID= 
    @SlimuID AND UNIQJOBID=@JobID;", con);

(Еще одна полезная вещь в параметризованных запросах состоит в том, что правильное цитирование - если оно вообще требуется,Подумайте о значениях INT, будет обрабатываться механизмом базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...