Russian Qt Forum
Ноябрь 23, 2024, 04:01
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Базы данных
>
qt+mysql
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: qt+mysql (Прочитано 14369 раз)
Hornet
Гость
qt+mysql
«
:
Январь 06, 2017, 20:20 »
Здравствуйте.
Раньше пользовался скриптом для поиска данных в базе, но решил сделать графическую форму для поиска
коннект работает простой запрос при нажатии кнопки тоже работает "Вывод данных".
Но сталкнулся с такой проблемой в поле lineEdit..1 ...2...3 нужно заполнить данные и она должна проитись по таблицам
и наити их, и вывести что нашла.
как sql код совместить с тем что щас есть.Ив sql коде подставить значения lineedit..2.....3
Записан
demal
Чайник
Offline
Сообщений: 53
Re: qt+mysql
«
Ответ #1 :
Январь 08, 2017, 01:42 »
QString filtr= QString(tr("Select * From блабла where ххх=%1").arg(ui->lineEdit1->text()));
и так до 9 аргументов.
Записан
Hornet
Гость
Re: qt+mysql
«
Ответ #2 :
Январь 08, 2017, 22:16 »
Можно по подробней попробывал не получилось.
Мне в условие where надо подставить Фамилия linerdit Имя lineEdit2 Отчество lineEdit3
Записан
demal
Чайник
Offline
Сообщений: 53
Re: qt+mysql
«
Ответ #3 :
Январь 09, 2017, 01:16 »
QString filtr=QString(tr("Select * From имя_таблицы where фамилия='%1' and имя='%2' and отчество='%3').arg(ui->lineEdit->text(),ui->lineEdit2->text(), ui.lineEdit3->text()));
QSqlQuery query(filtr);
как то так. только всё должно быть на английском.
Записан
GraninDm
Гость
Re: qt+mysql
«
Ответ #4 :
Январь 09, 2017, 09:16 »
Может все таки
query.prepare(...)
query.bindValue(...)
Записан
demal
Чайник
Offline
Сообщений: 53
Re: qt+mysql
«
Ответ #5 :
Январь 09, 2017, 22:33 »
в его случае без разницы. У него всё-равно строковые значения.
Записан
Hornet
Гость
Re: qt+mysql
«
Ответ #6 :
Январь 11, 2017, 08:44 »
QSqlQueryModel*model= new QSqlQueryModel;
QSqlQuery query;
query.exec("select nmedk,fam,im,otch,datr,datp,datw,diagn from st_ps_99 "
"where fam = '"+ui->lineEdit->text()+"' and im ='"+ui->lineEdit_2->text()+"'"
"and otch = '"+ui->lineEdit_3->text()+"'");
//model->setQuery(query);
model->setQuery(query);
ui->tableView->setModel(model);
Вот так работает
а так не работает,но приложение запускается, но данные не выводит
QSqlQueryModel*model= new QSqlQueryModel;
QSqlQuery query;
query.exec("select nmedk,fam,im,otch,datr,datp,datw,diagn from st_ps_99 "
"where fam = '"+ui->lineEdit->text()+"' and im ='"+ui->lineEdit_2->text()+"'"
"and otch = '"+ui->lineEdit_3->text()+"'"
"union all"
"select nmedk,fam,im,otch,datr,datp,datw,diagn from st_ps_00"
"where fam = '"+ui->lineEdit->text()+"' and im ='"+ui->lineEdit_2->text()+"'"
"and otch = '"+ui->lineEdit_3->text()+"'" );
//model->setQuery(query);
model->setQuery(query);
ui->tableView->setModel(model);
Записан
Hornet
Гость
Re: qt+mysql
«
Ответ #7 :
Январь 11, 2017, 09:13 »
Что посоветуете для решения проблемы
прошу подробно объяснить новичку.
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: qt+mysql
«
Ответ #8 :
Январь 11, 2017, 09:17 »
Цитата: demal от Январь 09, 2017, 22:33
в его случае без разницы. У него всё-равно строковые значения.
Есть разница - bind нормально экранирует. И код намнооого читабельнее становится, ибо в следующем посте вообще нихрена непонятно.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: qt+mysql
«
Ответ #9 :
Январь 11, 2017, 09:18 »
Цитата: Hornet от Январь 11, 2017, 09:13
Что посоветуете для решения проблемы
прошу подробно объяснить новичку.
Советую переделать код с использованием bindValue, убедиться в его корректности/некорретности и уже его сюда запостить. Так же, рекомендую пользоваться тегом code для форматирования сообщений.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Hornet
Гость
Re: qt+mysql
«
Ответ #10 :
Январь 11, 2017, 10:00 »
Коректности\некоректности Джедай первый кусок кода отрабатывает четко.
но когда я делаю запросе ко второй таблице ВОТ:
QSqlQueryModel*model= new QSqlQueryModel;
QSqlQuery query;
query.exec("select nmedk,fam,im,otch,datr,datp,datw,diagn from st_ps_99 "
"where fam = '"+ui->lineEdit->text()+"' and im ='"+ui->lineEdit_2->text()+"'"
"and otch = '"+ui->lineEdit_3->text()+"'");
" union all"
"select nmedk,fam,im,otch,datr,datp,datw,diagn from st_ps_00"
"where fam = '"+ui->lineEdit->text()+"' and im ='"+ui->lineEdit_2->text()+"'"
"and otch = '"+ui->lineEdit_3->text()+"'" );
//model->setQuery(query);
model->setQuery(query);
ui->tableView->setModel(model);
данные не выводятся.
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: qt+mysql
«
Ответ #11 :
Январь 11, 2017, 10:07 »
qDebug () << query.lastError().text();
Сделай это после exec и посмотри что выдаст в консоль.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Hornet
Гость
Re: qt+mysql
«
Ответ #12 :
Январь 11, 2017, 11:10 »
Запуск C:\Users\work\Documents\build-mysql-Desktop_Qt_5_6_2_MinGW_32bit-Debug\debug\mysql.exe...
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'allselect nmedk,fam,im,otch,datr,datp,datw,diagn from st_ps_00where fam = 'ив' at line 1 QMYSQL: Unable to execute query"
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: qt+mysql
«
Ответ #13 :
Январь 11, 2017, 11:14 »
st_ps_00where
Ты видишь суслика?
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: qt+mysql
«
Ответ #14 :
Январь 11, 2017, 11:15 »
Вот поэтому пиши запросы в человеческом виде с биндами и без конкатенации.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...