Форум программистов, компьютерный форум, киберфорум
Наши страницы

Qt

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.95
menafis
1 / 1 / 0
Регистрация: 26.02.2014
Сообщений: 147
#1

Как подключиться к бд и проверить введенные данные - C++ Qt

31.03.2014, 14:47. Просмотров 2798. Ответов 75
Метки нет (Все метки)

Народ плиз помогите, созданна форма авторизации
C++ (Qt)
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
    AuthDialog::AuthDialog(QWidget *parent)
    : QDialog(parent) {
    //Login window
    setWindowTitle(tr("Авторизация"));
    usernameLine = new QLineEdit(this);
    passwordLine = new QLineEdit(this);
    connect(usernameLine, SIGNAL(editingFinished()),
            this, SLOT(moveFocusToPasswordLine()));
    passwordLine->setEchoMode(QLineEdit::Password);
    connect(passwordLine, SIGNAL(editingFinished()),
            this, SLOT(moveFocusToAcceptButton()));
    QLabel* usernameLabel = new QLabel(tr("Логин"), this);
    QLabel* passwordLabel = new QLabel(tr("Пароль"), this);
    acceptButton = new QPushButton(tr("Войти"), this);
 
    connect(acceptButton, SIGNAL(clicked()),
            this, SLOT(onAcceptButtonPressed()));
    cancelButton = new QPushButton(tr("Cancel"), this);
 
    connect(cancelButton, SIGNAL(clicked()),
            this, SLOT(reject()));
    QHBoxLayout* buttonsLayout = new QHBoxLayout;
    buttonsLayout->setAlignment(Qt::AlignCenter);
    buttonsLayout->addWidget(acceptButton);
    buttonsLayout->addWidget(cancelButton);
    QVBoxLayout* mainLayout = new QVBoxLayout(this);
    mainLayout->addWidget(usernameLabel);
    mainLayout->addWidget(usernameLine);
    mainLayout->addWidget(passwordLabel);
    mainLayout->addWidget(passwordLine);
    mainLayout->addLayout(buttonsLayout);
    setLayout(mainLayout);
 
    errorWindow = new QDialog;
    errorWindow->setWindowTitle(tr("Error"));
    errorAcceptButton = new QPushButton(tr("Ok"), errorWindow);
    connect(errorAcceptButton, SIGNAL(clicked()),
            this, SLOT(onAcceptErrorButtonPressed()));
    QLabel* errorLabel = new QLabel(tr("Введен не верный пароль!"),errorWindow);
    QVBoxLayout* errorLayout = new QVBoxLayout(errorWindow);
    errorLayout->setAlignment(Qt::AlignCenter);
    errorLayout->addWidget(errorLabel);
    errorLayout->addWidget(errorAcceptButton);
    errorWindow->setLayout(errorLayout);
}
 
 
AuthDialog::~AuthDialog() {
 
}
 
 
void AuthDialog::onAcceptButtonPressed() {
    if (checkAuth()) {
        emit accepted();
        delete errorWindow;
    }
    else {
        // deactivate the dialog, reset its fields and show "error message" window
 
 
        usernameLine->clear();
        passwordLine->clear();
    }
}
 
 
bool AuthDialog::checkAuth()
{
   if (usernameLine->text() == "adm")
  {
      f1=new Form;
       f1->show();
   }
   if(usernameLine->text()=="oper")
   {
       f4=new Form3;
       f4->show();
   }
   if(usernameLine->text()=="")
   {
       errorWindow->show();
   }
 
}
 
 
 
 
 
 
void AuthDialog::onAcceptErrorButtonPressed() {
    // hide the "error message" window and activate the dialog
    errorWindow->hide();
 
    usernameLine->setFocus();
 
}
 
 
void AuthDialog::moveFocusToPasswordLine() {
    // move the focus to the "password" input field when pressed "Enter" key
    passwordLine->setFocus();
}
 
 
void AuthDialog::moveFocusToAcceptButton() {
    // move the focus to the "accept" button and make it active
    acceptButton->setFocus();
 
}
Она работает и вполне, теперь проблема в том чтоб подкючиться к бд, и выполнить проверку, кто может помочь помогите очень прошу
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2014, 14:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как подключиться к бд и проверить введенные данные (C++ Qt):

Как сравнить введенные в поля числа с определенными числами - C++ Qt
Даны 3 поля textedit под названием день, месяц, год. В них вводятся числа и нужно создать кнопку которая при нажатии на нее будет...

Как проверить введенные данные на тип - C#
Есть кнопка(button1), текстовое поле(textBox1) и метка(label1). В textBox1 вводится число/символы типа либо decimal, либо ushort, либо...

Как проверить введенные данные без обновления страницы? - PHP
Привет всем. Пишу страницу регистрации, сделал проверку введенных данных (имени, фамилии, email и тд) на корректность, но как сделать...

Проверить введенные данные, и если они некорректны - вывести сообщение - C++
Здравствуйте. Я пытаюсь добавить в свою лабораторную работу проверку введенных данных, и если это не цифры, а буквы, либо символы - то...

.NET 4.x Как сохранить введенные пользователем данные? - C#
Какие есть способы реализовать сохранение данных, которые ввел пользователь.? Например: Есть форма, в которой есть два поля TextBox...

Как стереть неверно введенные данные... - C++ Builder
Доброго дня! Пишу простые консольные приложения, нтересует такой вопрос: а можно ли как-то при вводе подать сигнал компьютеру о том, что...

75
Чистый
Автор FAQ
2709 / 1405 / 73
Регистрация: 08.09.2011
Сообщений: 3,733
Записей в блоге: 1
31.03.2014, 17:21 #2
для работы с БД в pro файле вашего проекта добавляете строки:
C++ (Qt)
1
QT+=sql
после чего с использованием классов QSqlDataBase QSqlQuery и др реализуетет то что Вам необходимо, вот тут есть более ли менее внятная статья http://habrahabr.ru/post/51650/ почитайте ее там все расписано, будут вопросы задавайте
2
xEmpire
25 / 25 / 9
Регистрация: 07.12.2012
Сообщений: 169
Завершенные тесты: 1
31.03.2014, 18:18 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
static bool CreateConnection()
{
    QSqlDatabase DB = QSqlDatabase::addDatabase("QMYSQL");
    DB.setHostName("Здесь хост");
    DB.setDatabaseName("имя таблицы");
    DB.setUserName("логин"); //Не тот, что вводит пользователь, а логин от бд (рутовский например)
    DB.setPassword("пас от логина");
    if (!DB.open()) {
//        DB.lastError().text();
        return false;
    }
    return true;
}
и сравниваешь passwordLine->text с тем, что вернёт SELECT
MySQL
1
2
3
SELECT password
FROM users
WHERE password = passwordLine->text();
1
menafis
1 / 1 / 0
Регистрация: 26.02.2014
Сообщений: 147
01.04.2014, 09:44  [ТС] #4
Цитата Сообщение от xEmpire Посмотреть сообщение
Код MySQL
1
2
3
SELECT password
FROM users
WHERE password = passwordLine->text();
где именно это прописать, спасибо за строки подключения

Добавлено через 51 минуту
блин не могу понять прошел конект или нет

Добавлено через 19 минут
не создаеться соединение не пойму, почему

Добавлено через 3 минуты
Цитата Сообщение от xEmpire Посмотреть сообщение
DB.setDatabaseName("имя таблицы");
тут же имя базы

Добавлено через 4 минуты
сторкчка не та была, точне версия библеотеки, вместо QMYSQL->QSQLITE))))))))точно дятел я C++, теперь другой вопрос куда вставить текст запроса
SQL
1
2
3
SELECT password
FROM users
WHERE password = passwordLine->text();
Добавлено через 3 минуты
и как-то не соображу как это сделать, чтоб по запросу проверялись пароль логин и в зависемоти от этого окрывались формы

Добавлено через 17 минут
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if (DB.open())
   {
        if(usernameLine->text()=="adm")
        {
        QSqlQuery query;
        query.exec("SELECT password_user FROM users WHERE password_user = passwordLine->text();");
        f1=new Form();
        f1->show();
        }
        if(usernameLine->text()=="oper")
        {
        QSqlQuery query;
        query.exec("SELECT password_user FROM users WHERE password_user = passwordLine->text();");
        f4=new Form3;
        f4->show();
        }
   }
вот что у меня получилось но тут все жестко завязанно на логинах и пофиг какой пароль, а мне надо чтоб пароль и логин совпадали, и только потом открывалась форма.....есть код на C# моя реализация, но не могу его перевести под C++
0
Чистый
Автор FAQ
2709 / 1405 / 73
Регистрация: 08.09.2011
Сообщений: 3,733
Записей в блоге: 1
01.04.2014, 09:52 #5
SQL
1
SELECT user_name FROM user_table WHERE user_pass=pass
user_name поле из user_table где хранится имя пользователя в результет сверяете полученное имя с тем что ввел юзер, совпало значит все верно, но так не правильно, как у вас реализовано разграничение прав? каждый пользователь имеет свои права на работу в бд ?
0
menafis
1 / 1 / 0
Регистрация: 26.02.2014
Сообщений: 147
01.04.2014, 09:52  [ТС] #6
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
 if (comboBox1.Text == "админ")
                       {
                           SqlCommand com = new SqlCommand();
                           com.CommandText = @"select * from users where Password_user='" + textBox1.Text + "' AND Login_user='" + comboBox1.Text + "'";
                           conn.Open();
                           com.Connection = conn;
                           sda.SelectCommand = com;
                           sda.Fill(data, "0");
                           int count = data.Tables[0].Rows.Count;
                           if (count > 0)
                           {
                               Form2 f2 = new Form2();
                               f2.Show();
                           }
                       }
                       if (comboBox1.Text == "оператор")
                       {
                           SqlCommand com = new SqlCommand();
                           com.CommandText = @"select * from users where Password_user='" + textBox1.Text + "' AND Login_user='" + comboBox1.Text + "'";
                           conn.Open();
                           com.Connection = conn;
                           sda.SelectCommand = com;
                           sda.Fill(data, "0");
                           int count = data.Tables[0].Rows.Count;
                           sda.Fill(data, "0");
                           if (count > 0)
                           {
                               Form3 f3 = new Form3();
                               f3.Show();
                           }
вот код шарпа
0
menafis
1 / 1 / 0
Регистрация: 26.02.2014
Сообщений: 147
01.04.2014, 09:54  [ТС] #7
Цитата Сообщение от Чистый Посмотреть сообщение
на работу в бд ?
не на работу а на доступ к данным, у меня простая до маразма схема работы.....админ может коректировать то есть полный доступ операторы только смотреть
0
Чистый
Автор FAQ
2709 / 1405 / 73
Регистрация: 08.09.2011
Сообщений: 3,733
Записей в блоге: 1
01.04.2014, 09:55 #8
вот тут http://qt-project.org/doc/qt-4.8/qsqlquery.html описано как работать с QSqlQuery и как получить данные которые были возвращены запросом.

Добавлено через 51 секунду
menafis, пользователи заведены в самой MySQL или ограничения на уровне софта ?
1
menafis
1 / 1 / 0
Регистрация: 26.02.2014
Сообщений: 147
01.04.2014, 10:20  [ТС] #9
Чистыйв самой бд....логин это так для красоты...по большому счету...для проверки совпадение логин пароль

Добавлено через 1 минуту
код приведенный выше на шарме рабочий и вполне успешно.....пользователь у которого логин "адм" может зайти только со своим паролем, соответсвено оператор только со своим

Добавлено через 5 минут
Чистый, можешь подсказать вот запрос
SQL
1
2
        QSqlQuery query;
        query.exec("SELECT login_user FROM users WHERE password_user = passwordLine->text()");
как сделать так чтоб если результат что логин в таблице "админ" и пароль указан верно то откроеться форма админа

Добавлено через 2 минуты
точнее получатьеся так если логин пользователя "" и у него есть пароль в базе то окрываеться форма соглано логину

Добавлено через 7 минут
C++ (Qt)
1
2
3
4
5
if(usernameLine->text()=="adm")
        {
        QSqlQuery query;
        query.exec("SELECT password_user FROM users WHERE password_user = passwordLine->text()");
        }
и вот тут надо как то написать если результат запроса найден, то есть для этого логина есть пароль то открываеться форма....Помогите не знаю как это написать
0
Чистый
Автор FAQ
2709 / 1405 / 73
Регистрация: 08.09.2011
Сообщений: 3,733
Записей в блоге: 1
01.04.2014, 10:20 #10
после того как выполнили запрос, возьмите результат запроса в котором будут имена, вот их и сверяй с тем что ввел пользоатель, а если имя вообще пустое то и запрос даже делать не надо .

вот пример их документации:
C++ (Qt)
1
2
3
4
5
 QSqlQuery query("SELECT country FROM artist");
     while (query.next()) {
         QString country = query.value(0).toString();
         doSomething(country);
     }
1
menafis
1 / 1 / 0
Регистрация: 26.02.2014
Сообщений: 147
01.04.2014, 12:01  [ТС] #11
Спасибо большое, вьехать так и не могу....простите что отнял у вас время

Добавлено через 1 час 22 минуты
если у кого будут идеи то помогите, пояснив что именно и куда писать.....как только не изварачивался не получаться все жестко привязанно на логин а на пароль поралельно
0
Воротислав
124 / 102 / 27
Регистрация: 25.02.2010
Сообщений: 448
01.04.2014, 12:05 #12
menafis, Добрый день. Покажу как я реализовал систему авторизации. Не скажу насколько она хороша, еще не тестировалась в "боевых" условиях, но на уровне самому потыкать - все работает. Итак, начнем. Для начала у меня есть отдельный класс для подключения к БД, который является синглтоном:
Кликните здесь для просмотра всего текста
C++ (Qt)
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
SQLAgent *SQLAgent::instance()
{
    if(!_instance)
        _instance = new SQLAgent;
 
    return _instance;
}
 
SQLAgent::SQLAgent()
{
    _db = new QSqlDatabase(QSqlDatabase::addDatabase("QPSQL"));
}
 
SQLAgent::~SQLAgent()
{
    QString connectionName = _db ->connectionName();
    disconnect();
    _instance = 0;
    delete _db;
    QSqlDatabase::removeDatabase(connectionName);
}
 
 
bool SQLAgent::connect()
{
    _db->setHostName(nameHostBase);
    _db->setDatabaseName(nameDataBase);
    _db->setPort(namePortBase.toInt());
    _db->setUserName(nameUserBase);
    _db->setPassword(passwordUserBase);
 
    if (!_db->open()){
        QMessageBox::warning(0, QObject::tr("Ошибка!"), _db->lastError().text());
    }
    return _db->open();
}


идем далее. Из основного окна выбирается пункт "подключение", открывается окно авторизации. Здесь стоит заметить, что на данный момент, подключение к БД выполняется под одной учетной записью в самой БД, а дальше выполняется проверка из таблицы users. Как выглядит подключение:
Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ConnectDialog dialog();// вызывается диалог подключения, который состоит из 2 полей логина и пароля и комбобокс выбора к кому подключемся( это не важно);
if(dialog.exec()){
            QString login = dialog.lineEdit_login->text(); // записываем в переменную введенный логин
            QString password = dialog.lineEdit_password->text(); // и пароль
            QString nameCon = dialog.comboBox_nameConnect->currentText();
 
            SQLAgent *agent = SQLAgent::instance(); // вызываем класс подключения
            agent->copyValues(set.nameHostset, set.nameDBset, set.namePortset, set.nameUserset, set.passUserset); // техническое решение, где копируются настройки к БД из файла, исходя из выбранного
            _connected = agent -> connect(); // производим подключение к БД (сам класс определяет есть или нет подключения, поэтому если нет ошибки - мы подключились)
 
            Auth auth; // класс авторизации
            if(!auth.avtorizator(login, password)){ // здесь вызываем ф-ю класса на собственно проверку имени и пароля, передавая в качестве параметра наши переменные, описанные выше.
                agent -> disconnect(); // если пароль или имя не верны, отключаемся от БД
            } else { // техническое решение, нам оно не пригодится.
                UserSetting *uset = UserSetting::instance();
                postConnected(_connected, uset->group);
            }
        }


Теперь класс авторизации:
Кликните здесь для просмотра всего текста
C++ (Qt)
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
bool Auth::avtorizator(const QString &login, const QString &pass)
{
    QSqlQuery query;
    query.prepare("SELECT password FROM users WHERE login = :login"); //выбираем из БД пароль, где по условию логина.
    query.bindValue(":login", login);
    if(!query.exec()){
        QMessageBox::warning(0, "Ошибка", query.lastError().text());
    }
 
    QString pass_enc = "";
    QSqlRecord rec = query.record(); // и записываем все что выбрали в переменную pass_enc
    while(query.next()){
        pass_enc = query.value(rec.indexOf("password")).toString();
    }
 
    if(pass_enc.isEmpty()){ // если переменная оказалась пуста - значит такого пользователя нет
        QMessageBox::warning(0, "Ошибка!", "Неверно указано имя пользователя!");
        return false;
    } else { // иначе проверяем пароль
        QString password;
        password = pass_enc;
 
        if(password == pass){ // проверка пароля и возврат результата
             return true;
        } else {
            QMessageBox::warning(0, "Ошибка!", "Неверный пароль!");
            return false;
        }
    }
}


Надеюсь Вам поможет.
1
Чистый
Автор FAQ
2709 / 1405 / 73
Регистрация: 08.09.2011
Сообщений: 3,733
Записей в блоге: 1
01.04.2014, 12:08 #13
как по мне проще сделать так, у вас есть бд, в ней заведены пользователи, каждому пользователю дать права которые у него должны быть, админ полные права на базу всем остальным пользователям права на чтение например, после чего использовать логин и пароль которые укажет пользователь в форме как реквизиты к подключению к БД, база данных сама уже разрулит можно подключатся данному пользователю к бд или нет и если да то что он умеет, в результате вы не сможете подключится к БД без указания правильногологина и пароля, это более грамотное решение чем ваше
1
Воротислав
124 / 102 / 27
Регистрация: 25.02.2010
Сообщений: 448
01.04.2014, 12:12 #14
Чистый, согласен с Вами полностью. Но вопрос в том, что в Вашем примере, при заведении нового пользователя, кто-то должен добавить его в БД. Я пытаюсь спроектировать систему, где, грубо говоря, начальник отдела сможет сам добавить нового пользователя, не касаясь напрямую с БД, и выставить ему нужные права. В данном контексте я убрал из текстов выдачу прав на основании логина, ибо это не рассматриваемый предмет. Группа прав доступа так же хранится в таблице users
1
menafis
1 / 1 / 0
Регистрация: 26.02.2014
Сообщений: 147
01.04.2014, 12:19  [ТС] #15
спасибо я подумаю над вашими предложениями

Добавлено через 6 минут
форма авторизации вот так она выглядит у меня
C++ (Qt)
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
    AuthDialog::AuthDialog(QWidget *parent)
    : QDialog(parent) {
    //Login window
    setWindowTitle(tr("Авторизация"));
    usernameLine = new QLineEdit(this);
    passwordLine = new QLineEdit(this);
    connect(usernameLine, SIGNAL(editingFinished()),
            this, SLOT(moveFocusToPasswordLine()));
    passwordLine->setEchoMode(QLineEdit::Password);
    connect(passwordLine, SIGNAL(editingFinished()),
            this, SLOT(moveFocusToAcceptButton()));
    QLabel* usernameLabel = new QLabel(tr("Логин"), this);
    QLabel* passwordLabel = new QLabel(tr("Пароль"), this);
    acceptButton = new QPushButton(tr("Войти"), this);
 
    connect(acceptButton, SIGNAL(clicked()),
            this, SLOT(onAcceptButtonPressed()));
    cancelButton = new QPushButton(tr("Cancel"), this);
 
    connect(cancelButton, SIGNAL(clicked()),
            this, SLOT(reject()));
    QHBoxLayout* buttonsLayout = new QHBoxLayout;
    buttonsLayout->setAlignment(Qt::AlignCenter);
    buttonsLayout->addWidget(acceptButton);
    buttonsLayout->addWidget(cancelButton);
    QVBoxLayout* mainLayout = new QVBoxLayout(this);
    mainLayout->addWidget(usernameLabel);
    mainLayout->addWidget(usernameLine);
    mainLayout->addWidget(passwordLabel);
    mainLayout->addWidget(passwordLine);
    mainLayout->addLayout(buttonsLayout);
    setLayout(mainLayout);
 
    errorWindow = new QDialog;
    errorWindow->setWindowTitle(tr("Error"));
    errorAcceptButton = new QPushButton(tr("Ok"), errorWindow);
    connect(errorAcceptButton, SIGNAL(clicked()),
            this, SLOT(onAcceptErrorButtonPressed()));
    QLabel* errorLabel = new QLabel(tr("Введен не верный пароль!"),errorWindow);
    QVBoxLayout* errorLayout = new QVBoxLayout(errorWindow);
    errorLayout->setAlignment(Qt::AlignCenter);
    errorLayout->addWidget(errorLabel);
    errorLayout->addWidget(errorAcceptButton);
    errorWindow->setLayout(errorLayout);
}
 
 
AuthDialog::~AuthDialog() {
 
}
 
 
void AuthDialog::onAcceptButtonPressed() {
    if (checkAuth()) {
        emit accepted();
        //delete errorWindow;
    }
    else {
 
        usernameLine->clear();
        passwordLine->clear();
    }
}
 
 
bool AuthDialog::checkAuth()
{
    if (usernameLine->text() == ""&& passwordLine->text()==""|| passwordLine->text()=="")
   {
        usernameLine->clear();
        errorWindow->show();
   }
    else
    {
 
        CreateConnection();
    }
 
//   if(usernameLine->text()=="oper")
//   {
//       f4=new Form3;
//       f4->show();
//   }
//   if(usernameLine->text()=="")
//   {
//       errorWindow->show();
//   }
return true;
}
 
 
 
 
 
 
void AuthDialog::onAcceptErrorButtonPressed() {
    // hide the "error message" window and activate the dialog
    errorWindow->hide();
 
    usernameLine->setFocus();
 
}
 
 
void AuthDialog::moveFocusToPasswordLine() {
    // move the focus to the "password" input field when pressed "Enter" key
    passwordLine->setFocus();
}
 
 
void AuthDialog::moveFocusToAcceptButton() {
    // move the focus to the "accept" button and make it active
    acceptButton->setFocus();
 
}
 bool AuthDialog:: CreateConnection()
{
     QSqlDatabase DB = QSqlDatabase::addDatabase("QSQLITE");
    DB.setHostName("192.168.129.130");
    DB.setDatabaseName("monitoring");
    DB.setUserName("root");
    DB.setPassword("men143afis");
    if (DB.open())
   {
        QSqlQuery query;
        query.exec("SELECT * FROM users WHERE password_user = passwordLine->text() AND login_user=usernameLine->text()");
        if()
//        if(usernameLine->text()=="adm")
//        {
        f1=new Form();
        f1->show();
//        }
//        if (usernameLine->text()=="oper")
//        {
//        f4=new Form3;
//        f4->show();
//        }
   }
   else
   {
       DB.close();
   }
    return true;
}
и в конце где идет открытие форм, мне надо устроить маленькую проверку на совподение, если в бд логин и пароль принадлежат одному и томуже пользователю то открыть форму, админа или оператора
0
01.04.2014, 12:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2014, 12:19
Привет! Вот еще темы с ответами:

Как сохранить введенные данные пользователем - Delphi БД
Здравствуйте, Друзья. Программа: Учет ИТ проектов/идей Набросал на форму что должен ввести человек (в прикреплении скрин формы)...

Как проверять введенные пользователем данные? - Perl
При заполнении формы юзер вводит данные. Чтобы сервак не взломали, рекомендуется проверять данные на наличие спец символов. Кто как это...

как запомнить данные введенные в текстовом поле - Java
:-[ привет всем... только начела изучать Ява... у меня вопросик возник.. создала окно, меню, при нажатии из списка меню открываю окно с...

Как добавить введенные данные в разные таблицы? - MS Access
Добрый день! Подскажите, пожалуйста, как можно при работе с базой данных в Access сделать на VBA следующее. Я сделала 4 Text Box: -...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru