powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вывод результата sql-запроса в переменную
46 сообщений из 46, показаны все 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
Вывод результата sql-запроса в переменную
    #39640864
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegEgorov11stells2, в чем может быть проблема, теперь всегда выдает ошибку не верен логин или пароль, хотя в sql все работает и запрос выдает 1?
Отлаживать код умеете? Поставьте точку остановки, посмотрите, что возвращается.
Посмотрите, что у Вас в sqlaut. Похоже Вы не верно формируется значение переменной.
Если textBox1, textBox2 - это названия элементов управления, то значения, введенные пользователем - это textBox1.Text и textBox2.Text, соответственно.
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640866
OlegEgorov11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

я кажется нашел ошибку, у меня в sql запросе вставлен просто " + textbox1 +", а нужно же "+textbox1.text+"
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640869
OlegEgorov11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA,

да, спасибо,так и есть
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640874
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegEgorov11,

да не за что. Вам следует использовать параметры вместо конкатенации (выше Вам уже писали про возможность SQL-инъекций и простое введение апострофа).

Код: c#
1.
2.
3.
4.
5.
6.
var sqlaut = @"select PWDCOMPARE(@pass, (select [Password] from test.login where Name = @name))";

var command = new SqlCommand(sqlaut, connect);

command.Parameters.AddWithValue("name", textBox1.Text);
command.Parameters.AddWithValue("pass", textBox2.Text);


Вообщем читайте книжки по ADO.NET и отладку приложений .NET.
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640929
Фотография stells2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegEgorov11теперь всегда выдает ошибку не верен логин или пароль
Самый простой тут ответ - поставте точку останова на строке
Код: c#
1.
 object result = command.ExecuteScalar();


И на следующем шаге вы поймете почем не выполняется условие и уходит на else.

Смотрите что будет после вызова процедуры на сервере, лежать в переменной result.

Я понятия не имею что находится в sqlaut и что, какой тип возвращает процедура.
Не стесняйтесь, выкладывайте sqlaut .

Но, думаю, пройдясь по шагам, Вы сами все поймете.
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640936
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stells2Я понятия не имею что находится в sqlaut и что, какой тип возвращает процедура.
Не стесняйтесь, выкладывайте sqlaut .
Кхм... 21388491
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640941
Фотография stells2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
Я думаю, человек уже разобрался. :)
А на счет, что он хотел этим кодом поиметь - все впереди.
Если возникнут вопросы, подскажем. Я, если честно, вообще не понимаю зачем это всё так. Ну, да пусть учится.
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640947
Фотография stells2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegEgorov11,
Я с MSSQL давно в шарпе не работал, но, можно пофантазировать например так:
Почему я бы не стал использовать
Код: c#
1.
string sqlaut = @"select PWDCOMPARE('" + textBox2 + "', (select [Password] from test.login where Name like '" + textBox1 + "'))";


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

второй вариант, ничего не меняя - просто получал бы пароль пользователя по логину и сравнивал, типа такого
Код: 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.
27.
28.
29.
30.
 public void IsPwd(string slogin, string spwd)
        {
            try
            {
 /* Properties.Settings.Default.StrConnection - это строка подключения на уровне проекта ( проект - свойства - параметры) Ну, или можно где-то в начале класса описать переменную string со строкой подключения 
*/                
                using (SqlConnection connect = new SqlConnection(Properties.Settings.Default.StrConnection))
                {
                    connect.Open();

                    SqlCommand command = connect.CreateCommand();
                    command.CommandType = CommandType.Text;
                    command.CommandText = "select Password from test.login where Name like '" + slogin + "'";
                    if (command.ExecuteScalar().Equals(spwd))
                    {
                        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);
            }
        }


можно еще упрощать и фантазировать
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640950
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stells2можно еще упрощать и фантазировать
кончай фантазировать. Что тут 3 страницы обсуждать?
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640951
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stells2skyANA,
Я думаю, человек уже разобрался.
Думаете? Он выше уже написал, что разобрался.
Вы походу не любитель читать все сообщения в коротком топике, даже 4 первых на этой странице
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39640953
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stells2можно еще упрощать и фантазировать
Можно ещё нормально классы спроектировать, но автор ещё отлаживать не умеет и параметры использовать.
Так что давайте не будем
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39641038
Фотография stells2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123, skyANA,
Крутизной так и бразжет, ну так идем мимо.
Человеку даны варианты шагов, почва для размышления. Надо это ему или нет - не вам решать.
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39641072
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stells2,
вот этот твой пост 21390631 замечательный. А простыни готового кода совсем не нужны.
Удачи!
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39641154
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stells2Petro123, skyANA,
Крутизной так и бразжет, ну так идем мимо.
Человеку даны варианты шагов, почва для размышления. Надо это ему или нет - не вам решать.
Забавный персонаж. Автор уже разобрался, сказал спасибо. А ты припозднился со своими вариантами шагов
Это форум, детка, тут так бывает
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39641175
Фотография stells2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
деткой свою маму называй, а тут изволь вежливым быть.
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39641223
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stells2skyANA,
деткой свою маму называй, а тут изволь вежливым быть.
Вы, уважаемый, не удосужились топик прочитать. Понять проблему, понять, что она уже решена.
Так что не стоит вещать за вежливость
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39641257
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в переменную вводят, а не выводят :)
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39641315
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stells2skyANA,
деткой свою маму называй, а тут изволь вежливым быть.

злые юзеры...., но не обращай внимание, ты интересно пишешь, продолжай!

скажи, вот тут же всё правильно написано, да? ну, чтобы еще и к этому не прицепились

Код: c#
1.
string sqlaut = @"select PWDCOMPARE('" + textBox2 + "', (select [Password] from test.login where Name like '" + textBox1 + "'))";
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39641335
Фотография stells2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,
Выше автор уже разобрался.
Но очень интересна Ваше мнение - сами то как думаете?
"textBox2" точно не может быть строковой переменной или свойством, только компонент?
ps: Видимо, еще подрасти для троллинга надо, что бы не смешить других.
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39641349
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stells2Ролг Хупин,
Выше автор уже разобрался.
Но очень интересна Ваше мнение - сами то как думаете?
"textBox2" точно не может быть строковой переменной или свойством, только компонент?
ps: Видимо, еще подрасти для троллинга надо, что бы не смешить других.

вообще-то я спросил о textBox1, ну да ладно
Вам, перед тем как отчитывать юзеров, тоже неплохо бы "подрасти"(?) что бы вас по ни мали.
...
Рейтинг: 0 / 0
Вывод результата sql-запроса в переменную
    #39641366
Фотография stells2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,
А как отличается в этой конструкции textBox1 от textBox2 ? :)
...
Вопрос был - почему не конвентируется переменная, ответ - потому что там, вероятно, DBNull и дан пример обхода ошибки.
На следующую ошибку было предложено пройтись по шагам. Автор благополучно нашел причину сам.
А далее, чисто ради примера, был дан код, на примере исходного авторского, как один из возможных простых и понятных вариантов, и, может чуть интересней.
Мы все учимся, и если человек что-то делает, это отлично. Любая подскака тут только плюсом.
Нашлись "гуру" которых сее ущемило.

Вместо того, что бы, коль такие умные, задаться вопросом - а зачем вообще такая конструкция, которая в общем не имеет смысла, стали умничать.
Любой вопрос на форумах, как правило обрастает кучей страниц рассуждений и флуда, а ответ в редких случаях есть.


Модератор: Для автора вопрос был исчерпан, засим закрыто
...
Рейтинг: 0 / 0
46 сообщений из 46, показаны все 2 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вывод результата sql-запроса в переменную
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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