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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: БД в Qt5 (primeInsert(), insert())  (Прочитано 2711 раз)
barm12345
Новичок

Offline Offline

Сообщений: 21


Просмотр профиля
« : Июль 31, 2020, 15:08 »

Доброго времени суток!

Прошу помощи  - никак не могу разобраться с следующим кодом (Qt3), для примера возьмем из документации:
https://doc.qt.io/archives/3.3/qsqlcursor.html#insert:

QSqlCursor cur( "prices" );
QSqlRecord *buffer = cur.primeInsert();
buffer->setValue( "id",    53981 );
buffer->setValue( "name",  "Thingy" );
buffer->setValue( "price", 105.75 );
cur.insert();

Как это написать в Qt5? (не совсем понял primeInsert(), insert())






Записан
barm12345
Новичок

Offline Offline

Сообщений: 21


Просмотр профиля
« Ответ #1 : Июль 31, 2020, 15:57 »

QSqlQuery query(db);

query.prepare("INSERT INTO prices (id, name, price) "
                "VALUES (:id, :name, :price)");
  query.bindValue(":id", 53981);
  query.bindValue(":name", "Thindy"); 
  query.bindValue(":price", 105.75);
  query.exec();

Так правильно?
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #2 : Июль 31, 2020, 16:05 »

В общих чертах, да, правильно. Но не все SQL драйверы поддерживают именованные заполнители. Если поддержки нет, то лучше будет вот так:
Код:
query.prepare("INSERT INTO prices (id, name, price) VALUES (?, ?, ?)");
query.bindValue(0, 53981);
query.bindValue(1, "Thindy");
query.bindValue(2, 105.75);
Записан
barm12345
Новичок

Offline Offline

Сообщений: 21


Просмотр профиля
« Ответ #3 : Июль 31, 2020, 16:12 »

Это как пример, а так база у меня postgresql 9.4.5 (с соединением разобрался, все нормально). Она вроде поддерживает ?
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #4 : Июль 31, 2020, 16:41 »

Проверка:
Код:
QSqlDatabase::database().driver().hasFeature(QSqlDriver::NamedPlaceholders)
Записан
barm12345
Новичок

Offline Offline

Сообщений: 21


Просмотр профиля
« Ответ #5 : Июль 31, 2020, 16:45 »

Ок. Спасибо)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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