Russian Qt Forum
Ноябрь 24, 2024, 00:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: LineEdit  (Прочитано 8091 раз)
alim
Гость
« : Май 23, 2009, 18:12 »

Подскажите пож-та как считать цифры из LineEdit,чтобы в запросе указать число введенное пользователем?

QString text_win2  = lineEdit->text(),//bank
          text2_win2 = lineEdit2->text(),//country
          text3_win2 = lineEdit3->text(),//stock exchange
;
 query.exec("INSERT INTO Main VALUES('"+text_win2+"','"+text2_win2+"','"+text3_win2+"',число,");
Записан
sLiva
Гость
« Ответ #1 : Май 23, 2009, 18:19 »

В зависимости от типа:

Код:
int QString::toInt(bool *ok = 0, int base = 10) const
float QString::toFloat(bool *ok = 0) const
double QString::toDouble(bool *ok = 0) const
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #2 : Май 24, 2009, 01:11 »

лучше использовать строку для подготовки запроса и функцию arg();

Код:
QString sSelectQueryText = 
QString("select from WOMANS where (AGE > %1) and (AGE < %2) and (NAME = %3)").arg(18).arg(25).arg("SEXY");
Записан
Rcus
Гость
« Ответ #3 : Май 24, 2009, 08:01 »

Код:
QString sSelectQueryText = 
QString("select from WOMANS where (AGE > %1) and (AGE < %2) and (NAME = %3)").arg(18).arg(25).arg("SEXY");
Из-за таких любителей динамического SQL вместо параметризации потом фиг статистику с базы соберешь... поубивал бы
Записан
ритт
Гость
« Ответ #4 : Май 24, 2009, 08:48 »

Rcus, поясни, пожалуйста ))
Записан
Rcus
Гость
« Ответ #5 : Май 24, 2009, 09:00 »

Rcus, поясни, пожалуйста ))

Есть у меня на работе база на оракле, к которой за много лет было написано разными людьми модулей разных, но анализ производительности усложняется тем, что не все знали о параметризации запросов, поэтому при анализе статистики вариации одного запроса всплывают несколько раз с разными "параметрами". Тогда анализ ограничен одним запросом (время выполнения, сложность etc), а самая интересная статистика в виде общего времени выполнения, количества запросов становится непригодной к использованию.
Записан
Karl-Philipp
Гость
« Ответ #6 : Май 24, 2009, 10:53 »

Rcus, поясни, пожалуйста ))

Есть у меня на работе база на оракле, к которой за много лет было написано разными людьми модулей разных, но анализ производительности усложняется тем, что не все знали о параметризации запросов, поэтому при анализе статистики вариации одного запроса всплывают несколько раз с разными "параметрами". Тогда анализ ограничен одним запросом (время выполнения, сложность etc), а самая интересная статистика в виде общего времени выполнения, количества запросов становится непригодной к использованию.
то есть в посте break'a вместо констант ты хотел видеть переменные?
Записан
Rcus
Гость
« Ответ #7 : Май 24, 2009, 11:01 »

Не совсем, я хотел сказать что параметризация запроса изменением текста запроса мешает анализу, даже если в отдельном случае параметры константы.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #8 : Май 24, 2009, 11:30 »

Rcus, тыб выразился проще. Я так понимаю твой вариант prepare ...?
Записан

Юра.
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #9 : Май 24, 2009, 13:14 »

Да я на самом деле сам за параметризацию, по крайней мере когда это касается переменных, а вот когда я составляю запрос INSERT - и у меня еще не известно какие колонки будут вставляться - то через описанный способ. Но не все драйвера не всех баз для Qt поддерживают эту возм. поэтому предложил 100% рабочий вариант.

Исправляюсь:

Код:
QSqlQuery query;
query.prepare("select from WOMANS where (AGE > :AGE_MIN) and (AGE < :AGE_MAX) and (NAME = :NAME)");
query.bindValue(":AGE_MIN", 18);
query.bindValue(":AGE_MAX", 25);
query.bindValue(":NAME", "SEXY");
query.exec();
Записан
ритт
Гость
« Ответ #10 : Май 24, 2009, 16:47 »

благодарствую, Rcus.
до сих пор не сталкивался с необходимостью собирать статистику с бд - потому выпада и не понял. теперь всё четко и ясно Улыбающийся
Записан
mugabe
Гость
« Ответ #11 : Май 25, 2009, 10:07 »

А здесь дело не только в статистике.

Например, два варианта:

Код
C++ (Qt)
QSqlQuery query;
for (int i = 0; i < 100000; i++) {
 query.exec(QString("insert into test (a, b) values (%1, %2)").arg(i).arg(i * 2));
}
 

Код
C++ (Qt)
QSqlQuery query;
 
query.prepare("insert into test (a, b) values (:a, :b)");
 
for (int i = 0; i < 100000; i++) {
 query.bindValue(":a", i);
 query.bindValue(":b", i * 2);
 query.exec();
}
 

делают одно и то же.
Но второй в некоторых (а может даже в большинстве) СУБД будет работать быстрее, т.к. подготовка запроса происходит всего один раз, а это не очень то дешевая операция.
Записан
DmP
Гость
« Ответ #12 : Май 26, 2009, 06:14 »

Но второй в некоторых (а может даже в большинстве) СУБД будет работать быстрее, т.к. подготовка запроса происходит всего один раз, а это не очень то дешевая операция.
Если говорить о postgre, то будет предпочтительней говорить о третьем варианте, и писать параметры через вопросы, так как :a и :b все равно будут заменены на знаки вопроса.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.092 секунд. Запросов: 23.