Stylus STYLUS Ответов: 1

Получить имя пользователя из одной формы в другую


Get user name from one form to another


Группы водопользователей

access rights


У меня есть ошибка в этой строке

korisnickaGrupa = Int32.Parse(myCommand3.ExecuteScalar().ToString());


Sql запрос в порядке

Какая-то помощь?

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

private void prijava()
        if (korisnikId > 0)
            {
                command = "SELECT osobe_korisnici.lozinka FROM osobe_korisnici where osobe_korisnici.id = " + korisnikId;
                SqlCommand myCommand2 = new SqlCommand(command, myConnection);
                String lozinka = myCommand2.ExecuteScalar().ToString();
                if (lozinka == lozinkaTextBox.Text)
                {
                    command = "SELECT korisnik_grupa.redni_broj FROM korisnik_grupa where korisnik_grupa.broj_grupe = \"" + korisnikId + "\"";
                    //MessageBox.Show(command);
                    SqlCommand myCommand3 = new SqlCommand(command, myConnection);
                    korisnickaGrupa = Int32.Parse(myCommand3.ExecuteScalar().ToString());
                   
                    if (korisnickaGrupa == 1)
                        {
                        findsUserName();
                        DialogResult = DialogResult.OK;
                    }
                    else
                    {
                        errorLabel.Text = "You dont have acces for this app";
                    }
                }
                else
                {
                    errorLabel.Text = "Wrong password";
                }
            }
            else
            {
                errorLabel.Text = "Wrong user name";
            }


        }



public void findsUserName()
        {
            SqlConnection myConnection = new SqlConnection(cs);
            String command = "SELECT ime_prezime FROM osobe_korisnici  where id = \"" + korisnikId + "\"";
            //MessageBox.Show(command);
            SqlCommand myCommand = new SqlCommand(command, myConnection);


            myCommand.Connection.Open();
            this.korisnickoIme = myCommand.ExecuteScalar().ToString();
        }

Stylus STYLUS

private static int korisnikId;
private static int korisnickaGrupa;
частная строка korisnickoIme;

Я совсем забыл об этом...Я добавил на стартовую строку кода

Ziee-M

Какое исключение вы получаете ?
Похоже, что ваш возвращенный идентификатор (до синтаксического анализа) находится в неправильном формате, вероятно, специальный карактер в начале и/или конце. Просто удалите их с помощью Trim() или любым другим способом.

Stylus STYLUS

Исключение составляет число из команды

Stylus STYLUS

Я ошибаюсь, мне нужна помощь. Спасибо

Richard Deeming

Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.

Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]

Исправьте это, и вы почти наверняка исправите свою ошибку тоже.

1 Ответов

Рейтинг:
2

CPallini

Цитата:
Типа int32.Синтаксический анализ(myCommand3.Executescalar так().Метод toString());

Это утверждение является потенциальным источником многих исключений, вы должны обращаться с ними должным образом.
Вы заявили, что ваш запрос в порядке, но тем не менее такой код терпит неудачу. Используйте отладчик, чтобы найти проблему (например, недопустимое текстовое представление Int32).


Stylus STYLUS

korisnikId = конвертировать.ToInt32(myCommand.Executescalar так());

Эта строка является ошибкой