Название: qt+mysql Отправлено: Hornet от Январь 06, 2017, 20:20 Здравствуйте.
Раньше пользовался скриптом для поиска данных в базе, но решил сделать графическую форму для поиска (http://form.png) коннект работает простой запрос при нажатии кнопки тоже работает "Вывод данных". Но сталкнулся с такой проблемой в поле lineEdit..1 ...2...3 нужно заполнить данные и она должна проитись по таблицам и наити их, и вывести что нашла. как sql код совместить с тем что щас есть.Ив sql коде подставить значения lineedit..2.....3 Название: Re: qt+mysql Отправлено: demal от Январь 08, 2017, 01:42 QString filtr= QString(tr("Select * From блабла where ххх=%1").arg(ui->lineEdit1->text()));
и так до 9 аргументов. Название: Re: qt+mysql Отправлено: Hornet от Январь 08, 2017, 22:16 Можно по подробней попробывал не получилось.
Мне в условие where надо подставить Фамилия linerdit Имя lineEdit2 Отчество lineEdit3 Название: Re: qt+mysql Отправлено: demal от Январь 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); как то так. только всё должно быть на английском. Название: Re: qt+mysql Отправлено: GraninDm от Январь 09, 2017, 09:16 Может все таки
query.prepare(...) query.bindValue(...) Название: Re: qt+mysql Отправлено: demal от Январь 09, 2017, 22:33 в его случае без разницы. У него всё-равно строковые значения.
Название: Re: qt+mysql Отправлено: Hornet от Январь 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); Название: Re: qt+mysql Отправлено: Hornet от Январь 11, 2017, 09:13 Что посоветуете для решения проблемы
прошу подробно объяснить новичку. Название: Re: qt+mysql Отправлено: Пантер от Январь 11, 2017, 09:17 в его случае без разницы. У него всё-равно строковые значения. Есть разница - bind нормально экранирует. И код намнооого читабельнее становится, ибо в следующем посте вообще нихрена непонятно.Название: Re: qt+mysql Отправлено: Пантер от Январь 11, 2017, 09:18 Что посоветуете для решения проблемы Советую переделать код с использованием bindValue, убедиться в его корректности/некорретности и уже его сюда запостить. Так же, рекомендую пользоваться тегом code для форматирования сообщений.прошу подробно объяснить новичку. Название: Re: qt+mysql Отправлено: Hornet от Январь 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); данные не выводятся. >:( Название: Re: qt+mysql Отправлено: Пантер от Январь 11, 2017, 10:07 qDebug () << query.lastError().text();
Сделай это после exec и посмотри что выдаст в консоль. Название: Re: qt+mysql Отправлено: Hornet от Январь 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" Название: Re: qt+mysql Отправлено: Пантер от Январь 11, 2017, 11:14 st_ps_00where
Ты видишь суслика? Название: Re: qt+mysql Отправлено: Пантер от Январь 11, 2017, 11:15 Вот поэтому пиши запросы в человеческом виде с биндами и без конкатенации.
Название: Re: qt+mysql Отправлено: Hornet от Январь 11, 2017, 11:39 как
Название: Re: qt+mysql Отправлено: Hornet от Январь 11, 2017, 11:42 Покажи примером мой запрос по твоей версии с переходом на другую таблицу.
Название: Re: qt+mysql Отправлено: Пантер от Январь 11, 2017, 11:46 Код
Название: Re: qt+mysql Отправлено: Пантер от Январь 11, 2017, 11:50 Пробел вначале строки чтобы не потерять его вконце.
Название: Re: qt+mysql Отправлено: demal от Январь 13, 2017, 00:54 в его случае без разницы. У него всё-равно строковые значения. Есть разница - bind нормально экранирует. И код намнооого читабельнее становится, ибо в следующем посте вообще нихрена непонятно.Вот то, что он просто объеденил строки, тут да, может вылезти косяк с кодировками... А читабельность кода она относительна... Название: Re: qt+mysql Отправлено: GraninDm от Январь 13, 2017, 09:48 Может быть то, что в поле ввода отчество можно воткнуть значение
"and otch = '"+ui->lineEdit_3->text()+"'"); ';delete from table;select' Ну, или что-то типа этого... Название: Re: qt+mysql Отправлено: Hornet от Январь 15, 2017, 01:32 Спасибо всем за участие.
Все получилось.Огромное спасибо за помощь и терпение Пантеру, сделал как ты сказал запрос работает четко. |