powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вывод результата sql-запроса в переменную
25 сообщений из 46, страница 1 из 2
Вывод результата sql-запроса в переменную
    #39640342
OlegEgorov11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть запрос sql с функцией PWDcompare, на проверку пароля. Он выводит результат 1, если все верно, результат 0. если не верен пароль и результат NULL если не верно написан логин и пароль. Вот часть кода:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
  using (SqlConnection connect = new SqlConnection(@"Server=" + textBox3.Text + ";Database=test;User Id=" + textBox4.Text + ";Password=" + textBox5.Text + ";"))
                {
                    connect.Open();

                    SqlCommand command = new SqlCommand(sqlaut, connect);
                    command.CommandTimeout = 999;
                    object result = command.ExecuteScalar();
                    int a = Convert.ToInt32(result); /////здесь ошибка
                   
                    if (a == 1)
                  {
                      this.DialogResult = DialogResult.OK;
                  }

                  else
                  {

                      if (MessageBox.Show("Не верен логин или пароль!", "Внимание", MessageBoxButtons.RetryCancel, MessageBoxIcon.Question)
                         == System.Windows.Forms.DialogResult.Cancel)
                          this.Close();

                  }
                }


int a = Convert.ToInt32(result); - на этом месте выдает ошибку "object cannot be cast from DBNull to other types".
Мне нужно чтобы при условии возврата sql запросом единицы выполнялось условие прописанное в if, в остальных случаях выводилось сообщение.
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640345
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Текст sql-запроса нам нужно угадать?
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640349
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegEgorov11результат 0. если не верен пароль и результат NULL если не верно написан логин иобычно даже если пароль не верен, то сообщают что неверен логин или пароль.
Т.е. null уберите
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640350
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegEgorov11,
Запрос сделать чтобы Всегда был возврат 0/1
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640351
OlegEgorov11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123, это функция такая, она автоматом null выводит
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640354
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegEgorov11Petro123, это функция такая, она автоматом null выводит
Дай sql. Наверняка можно корректировать.
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640356
OlegEgorov11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Код: plsql
1.
string sqlaut = @"select PWDCOMPARE('" + textBox2 + "', (select [Password] from test.login where Name like '" + textBox1 + "'))";
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640357
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что мешает проверить на DbNull на клиенте?
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640360
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и такой параллельный вопрос, как вы думаете, что будет, если пользователь в textBox1 напишет что-то типа
')); DROP DATABASE;
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640365
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegEgorov11,
Ну тогда выбери где будешь делать.
На sql обернуть запросом для 0/1 коррекции или на клиенте проверить на null.
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640366
OlegEgorov11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

то есть ошибка из за того, что запрос может выдать значение NULL? как сделать на клиенте проверку на NULL?
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640369
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegEgorov11как сделать на клиенте проверку на NULL?как у тебя на 1. Пробуй.
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640375
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegEgorov11как сделать на клиенте проверку на NULL? https://msdn.microsoft.com/ru-ru/library/5011f09h(v=vs.120)
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640413
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
is System.DBNull
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640425
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

скорее всего будет ошибка синтаксиса, ты забыл правую часть "экранировать" подойдет либо --, либо какая то часть заканчивающаяся открывающейся '
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640431
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesShocker.Pro,

скорее всего будет ошибка синтаксиса, ты забыл правую часть "экранировать" подойдет либо --, либо какая то часть заканчивающаяся открывающейся 'поэтому я и написалShocker.Pro что-то типа, чтобы навести автора на мысль, что в любом случае пользователь не сможет задать себе пароль, содержащий апостроф, и это в лучшем случае
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640466
OlegEgorov11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
им пароли задавать не нужно, они уже есть, трудно объяснить. Я просто не совсем понять могу. Мне нужно делать наоборот? Ну, я пишу если равно единице, то открыть форму 2, а если нет то вывести сообщение. Мне нужно сделать как, если равно нулю или DBNull, то вывести сообщение, а если равно единице то открыть форму два? если не трудно то не могли бы Вы на примере того отрывка что я выложил привести пример?
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640493
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) вы пытаетесь конвертировать result в int
2) если result = DBNull - конвертировать в int не получится, о чем и сообщает ошибка
3) значит сначала нужно проверить на DBNull, а потом (если не равно) конвертировать в int
3а) другой вариант - воспользоваться TryParse вместо Parse

ваш код за вас писать не будут - направление дали - пишите
и учитесь пользоваться отладчиком, пошаговым выполнением программы и другими полезными средствами Visual Studio
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640494
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegEgorov11им пароли задавать не нужно, они уже есть, трудно объяснить.Какая разница. Если в пароле (который уже есть или который будет введен в ваш текстбокс) будет апостроф, программа упадет (и это в лучшем случае, в худшем будет уничтожена вся база). Почитайте на досуге тему "SQL-инъекции".
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640504
OlegEgorov11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, спасибо, буду разбираться
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640548
Фотография stells2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegEgorov11,
ваш код может быть таким:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
         try
            {
                using (SqlConnection connect = new SqlConnection(@"Server=" + textBox3.Text + ";Database=test;User Id=" + textBox4.Text + ";Password=" + textBox5.Text + ";"))
                {
                    connect.Open();

                    SqlCommand command = new SqlCommand(sqlaut, connect);
                    command.CommandTimeout = 999; // зачем???
                    object result = command.ExecuteScalar();
                    if (result != DBNull.Value) // если не NULL
                    {
                        if (Convert.ToInt32(result) == 1) // если пароль валидный
                            this.DialogResult = DialogResult.OK; // все хорошо, возращаем флаг OK
                    }
                    else
                    {
                        if (MessageBox.Show("Не верен логин или пароль!", "Внимание", MessageBoxButtons.RetryCancel, MessageBoxIcon.Question)
                           == DialogResult.Cancel)
                            this.DialogResult = DialogResult.Cancel; // возвращаем флаг что пароль не веный
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }



Где то, где запускается эта форма с паролями логинами:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
            Form2 frm = new Form2(); // ваша форма ввода пароля/логина
            if (frm.ShowDialog() == DialogResult.OK)
            {
                // все хорошо 
            }
            else
            {
                //все плохо
            }
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640585
OlegEgorov11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stells2, спасибо большое
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640848
OlegEgorov11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stells2, в чем может быть проблема, теперь всегда выдает ошибку не верен логин или пароль, хотя в sql все работает и запрос выдает 1?
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640856
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stells2,
Вот такая медвежья услуга выдавать готовый код вместо совместной поэтапной работы).
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640859
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegEgorov11stells2, в чем может быть проблема, теперь всегда выдает ошибку не верен логин или пароль, хотя в sql все работает и запрос выдает 1?пройдитесь отладчиком пошагово и скрин сюда.
...
Рейтинг: 0 / 0
25 сообщений из 46, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вывод результата sql-запроса в переменную
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]