Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
1 / 1 / 0
Регистрация: 05.05.2011
Сообщений: 53

Логин и пароль всегда правильные

09.05.2011, 13:46. Показов 2106. Ответов 22

Студворк — интернет-сервис помощи студентам
Вот запрос:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
ALTER PROCEDURE process4
    
    (
    @loginMy NVarChar(50) ,
    @passMy NVarChar(50)
    )
 
AS
     SET NOCOUNT ON 
     SELECT *
     FROM  Password
     WHERE Логин = @loginMy AND Пароль = @passMy
    RETURN
вот его осуществление на сишарп:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
string log;
            string p;
            log = string.Format(login.Text);
            p = string.Format(passvord.Text);
        
 
            SqlCommand cmd = new SqlCommand();
            SqlConnection con = new SqlConnection();
            con.ConnectionString = connectionString;
            cmd.Connection = con;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "[process4]";
            cmd.Parameters.Clear();
            SqlParameter p1 = cmd.Parameters.Add("@loginMy", SqlDbType.NVarChar, 50);
            SqlParameter p2 = cmd.Parameters.Add("@passMy", SqlDbType.NVarChar, 50);
 
         
            p1.Direction = ParameterDirection.Input;
            p2.Direction = ParameterDirection.Input;
 
            p1.Value = log;
            p2.Value = p;
            con.Open();
            try
            {
                //cmd.ExecuteReader();
                cmd.ExecuteNonQuery();
                MessageBox.Show("Привет," + log + "! Вы хорошо выглядите сегодня!");
                label6.Text = "Вы вошли в систему как администратор";
                запись.Visible = true;
                passenger.Visible = true;
                groupBox3.Visible = true;
                пассажиры.Visible = true;
                время.Visible = true;
                рейсы.Visible = true;
                label7.Visible = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Неверный логин или пароль!");
            }
            con.Close();
 
            login.Clear();
            passvord.Clear();
но почему то если ввести любые значение в текстбоксы логина и пароля, то все равно срабатывает...не могу найти ошибку) помогите )
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.05.2011, 13:46
Ответы с готовыми решениями:

Вводится строка, содержащая команду вида: ftp://логин:пароль@адрес_сервера. Написать программу, которая из введенной строки выделяет логин, пароль и а
Вводится строка, содержащая команду вида: ftp://логин:пароль@адрес_сервера. Написать программу, которая из введенной строки выделяет логин,...

Код PHP не берёт данные из базы данных, при авторизации всегда выдаёт прописанную ошибку "Неверный логин или пароль"
<head> <meta charset="UTF-8"> <title>QestBar</title> </head> <?php require...

Подскажите кодинг морды сменя пароля...(1 страниц вводим логин и пас если правильно вылазит 2 типо смените новый пароль...а 3 пароль сменен)
Только нужно учесть хэширование и хранение проля в отдельном файлике

22
334 / 270 / 18
Регистрация: 19.01.2011
Сообщений: 597
10.05.2011, 11:15
На первый взгляд - ошибки в коде нету. Может быть у Вас выводиться чтото в окно Output во время выполнения программы?
1
1 / 1 / 0
Регистрация: 05.05.2011
Сообщений: 53
10.05.2011, 18:05  [ТС]
Нет, вот Вы представьте: Пароль вводим, Логин вводим, кнопка войти, выводится messageBox Вы вошли типа!)
и все...и когда мы нажимаем на эту кнопку, то становятся visible ещё 3 кнопки.. и все...что же все таки не так?(((
0
334 / 270 / 18
Регистрация: 19.01.2011
Сообщений: 597
10.05.2011, 18:18
Ошибка наверное в логике Вашего блока. У Вас признаком неверного логина считается ошибка, произошедшая во время выполнения отложенной процедуры. А если ошибки во время выполнения не было, ведь значения не существующих логина и пароля не являються ошибкой для процедуры. С чего Вы решили WHERE Condition на 0 записей - это ошибка? Пусть процедура возвращает COUNT(*). И тогда
C#
1
2
 Int32 count = (Int32) cmd.ExecuteScalar();
if (count==0) throw new Exception();
Если вы хотите признак неправильного логина - ошибку.
1
1 / 1 / 0
Регистрация: 05.05.2011
Сообщений: 53
10.05.2011, 18:41  [ТС]
А теперь вообще не входит(((

Добавлено через 5 минут
Всмысле даже при правильном логине - ошибка
0
334 / 270 / 18
Регистрация: 19.01.2011
Сообщений: 597
10.05.2011, 18:42
Код покажите. И отложенной процедуры тоже.
1
1 / 1 / 0
Регистрация: 05.05.2011
Сообщений: 53
10.05.2011, 18:51  [ТС]
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
private void admin_Click(object sender, EventArgs e)
        {
            string log;
            string p;
            if (login.Text != null && passvord.Text != null)
            {
                log = string.Format(login.Text);
                p = string.Format(passvord.Text);
 
 
                SqlCommand cmd = new SqlCommand();
                SqlConnection con = new SqlConnection();
                con.ConnectionString = connectionString;
                cmd.Connection = con;
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "[process4]";
                cmd.Parameters.Clear();
                SqlParameter p1 = cmd.Parameters.Add("@loginMy", SqlDbType.NVarChar, 50);
                SqlParameter p2 = cmd.Parameters.Add("@passMy", SqlDbType.NVarChar, 50);
 
 
                p1.Direction = ParameterDirection.Input;
                p2.Direction = ParameterDirection.Input;
 
                p1.Value = log;
                p2.Value = p;
                con.Open();
                try
                {
                    //cmd.ExecuteReader();
                    //cmd.ExecuteNonQuery();
                    Int32 count = (Int32)cmd.ExecuteScalar();
                    if (count == 0) throw new Exception();
                    MessageBox.Show("Привет," + log + "! Вы хорошо выглядите сегодня!");
                    label6.Text = "Вы вошли в систему как администратор";
                    запись.Visible = true;
                    passenger.Visible = true;
                    groupBox3.Visible = true;
                    пассажиры.Visible = true;
                    время.Visible = true;
                    рейсы.Visible = true;
                    label7.Visible = true;
                }
                catch
                {
                    MessageBox.Show("Неверный логин или пароль!");
                }
                con.Close();
 
                login.Clear();
                passvord.Clear();
            }
            else
            {
                MessageBox.Show("Вы не заполнили нужные поля!");
            }
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
ALTER PROCEDURE process4
    
    (
    @loginMy NVarChar(50) ,
    @passMy NVarChar(50)
    )
 
AS
     SET NOCOUNT ON 
     SELECT *
     FROM  Password
     WHERE Логин = @loginMy AND Пароль = @passMy
    RETURN
0
334 / 270 / 18
Регистрация: 19.01.2011
Сообщений: 597
10.05.2011, 18:52
измените код отложенной процедуры с SELECT * на SELECT COUNT(*).
1
1 / 1 / 0
Регистрация: 05.05.2011
Сообщений: 53
10.05.2011, 19:39  [ТС]
О да! это работает))) спасибо =****************
А ты не знаешь..вот тут про добавление нового пароля...
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
31
                   SqlCommand cmd = new SqlCommand();
                   SqlConnection con = new SqlConnection();
                   con.ConnectionString = connectionString;
                   cmd.Connection = con;
                   cmd.CommandType = CommandType.StoredProcedure;
                   cmd.CommandText = "[new]";
                   cmd.Parameters.Clear();
                   SqlParameter p1 = cmd.Parameters.Add("@logEd", SqlDbType.VarChar, 50);
                   SqlParameter p2 = cmd.Parameters.Add("@pMe", SqlDbType.VarChar, 50);
 
 
                   p1.Direction = ParameterDirection.Input;
                   p2.Direction = ParameterDirection.Input;
 
                   p1.Value = log;
                   p2.Value = p;
                   con.Open();
                   try
                   {
                       cmd.ExecuteNonQuery();
                       //Int32 count = (Int32)cmd.ExecuteScalar();
                       //if (count == 0) throw new Exception();
                       MessageBox.Show("Новая учетная запись добавлена");
 
 
                   }
                   catch 
                   {
                       MessageBox.Show("Невозможно добавить запись");
                   }
                   con.Close();
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ALTER PROCEDURE NEW
    
    (
    @logEd VARCHAR(50),
    @pEd VARCHAR(50)
    )
    
AS
     SET NOCOUNT ON 
    
     INSERT 
     INTO Password (Логин, Пароль)
     VALUES (@logEd, @pEd)
    
    RETURN
почему то не добавляется...((( а где тут ошибка?(
0
334 / 270 / 18
Регистрация: 19.01.2011
Сообщений: 597
11.05.2011, 09:13
Хм.... В коде добавляется параметр SqlParameter p2 = cmd.Parameters.Add("@pMe", SqlDbType.VarChar, 50);
А в процедуре @pEd. Может в этом проблема???
1
1 / 1 / 0
Регистрация: 05.05.2011
Сообщений: 53
12.05.2011, 12:24  [ТС]
Да..с этим я уже все, разобралась))
а ты не знаешь, как сделать connectionString универсальной, чтобы можно на всех компьютерах запускать?)
или напосать какаой то код, чтобы он connectionString откуда то брал?)
0
334 / 270 / 18
Регистрация: 19.01.2011
Сообщений: 597
12.05.2011, 12:26
Немного не понял вопрос? Что значит на всех компьютерах? Если есть Sql сервер - то в коннектионстринг адрес сервера добавляется. Что ты подразумеваешь под универсальность ConnectionString?
1
1 / 1 / 0
Регистрация: 05.05.2011
Сообщений: 53
12.05.2011, 13:53  [ТС]
да..с этим я уже разобралась...а ты не знаешь как сделать connection string универсальной?
0
334 / 270 / 18
Регистрация: 19.01.2011
Сообщений: 597
12.05.2011, 13:55
Что значит в твоем понимании "универсальной"? Какой из параметров ConnectionString должен быть универсальным???
0
1 / 1 / 0
Регистрация: 05.05.2011
Сообщений: 53
12.05.2011, 16:48  [ТС]
Ну типа
C#
1
2
3
public string connectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" +
          @"E:\Лена\Вышка\C#\1 Курс, 4 Модуль\Курсовая\Авиарейс\Avia.mdf" +
         ";Integrated Security=True;Connect Timeout=30;User Instance=True";
это только на мойм компьютере, а вот что нибудь, чтобы отукда то считывался этот connectionString автоматом и можно было на разных компах запускать программу, не переделывая его?)
0
334 / 270 / 18
Регистрация: 19.01.2011
Сообщений: 597
12.05.2011, 17:30
Попробуйте переделать свой коннектион стринг таким образом - (Avia.mdf должен лежать рядом с исполняемым файлом вашей программы)
C#
1
2
3
4
string appPath = AppDomain.CurrentDomain.BaseDirectory;
public string connectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" +
          +appPath+"Avia.mdf" +
         ";Integrated Security=True;Connect Timeout=30;User Instance=True";
Добавлено через 42 секунды
Ну и само собой , то что качается SQLEXPRESS должно быть установлено на другой машине.
1
1 / 1 / 0
Регистрация: 05.05.2011
Сообщений: 53
12.05.2011, 17:34  [ТС]
Ошибка 1 Инициализатор поля не может обращаться к нестатическому полю, методу или свойству "Авиарейс.appPath"

и подчеркивает appPath
0
334 / 270 / 18
Регистрация: 19.01.2011
Сообщений: 597
12.05.2011, 17:48
Попробуйте формировать ConnectionString в конструкторе Вашего приложения, например, перед первым использованием.
1
1 / 1 / 0
Регистрация: 05.05.2011
Сообщений: 53
12.05.2011, 17:53  [ТС]
нет, с appPath что то не то, опять так же ошибка....(((
0
334 / 270 / 18
Регистрация: 19.01.2011
Сообщений: 597
12.05.2011, 18:07
Что такое конструктор - Вы знаете?

Добавлено через 2 минуты
public string connectionString = "";
И в конструкторе в самом начале:
string appPath = AppDomain.CurrentDomain.BaseDirectory;
connectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" +
+appPath+"Avia.mdf" +
";Integrated Security=True;Connect Timeout=30;User Instance=True";
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.05.2011, 18:07
Помогаю со студенческими работами здесь

Всегда ли Speaker динамик показывает правильные сигналы?
Здравствуйте, у меня есть Speaker динамик он озвучивает коды ошибок, и вопрос может ли он подавать не верный сигнал? Стоит ли ему доверять?...

Передать серверу логин и пароль для авторитизации, но пароль нужно передать в md5
Нужно передать серверу логин и пароль для авторитизации, но пароль нужно передать в md5. Но у меня передаваемое md5 отличается от md5...

Логин - пароль.
Подскажите пожалуйста, в чем ошибка: При правильном вводе логина и пароля, должна открываться форма2 и работать постоянно, а при...

Логин-пароль
Помогите, надо написать логин-пароль. Я сделал посредством ADOConnection, ADOTable и DataSource запись логина и пароля в БД. Вот теперь у...

Логин и пароль
надо написать программу кторая будет запрашивать логин и пароль


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru