Название: БД в Qt5 (primeInsert(), insert()) Отправлено: barm12345 от Июль 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()) Название: Re: БД в Qt5 (primeInsert(), insert()) Отправлено: barm12345 от Июль 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(); Так правильно? Название: Re: БД в Qt5 (primeInsert(), insert()) Отправлено: Hellraiser от Июль 31, 2020, 16:05 В общих чертах, да, правильно. Но не все SQL драйверы поддерживают именованные заполнители. Если поддержки нет, то лучше будет вот так:
Код: query.prepare("INSERT INTO prices (id, name, price) VALUES (?, ?, ?)"); Название: Re: БД в Qt5 (primeInsert(), insert()) Отправлено: barm12345 от Июль 31, 2020, 16:12 Это как пример, а так база у меня postgresql 9.4.5 (с соединением разобрался, все нормально). Она вроде поддерживает ?
Название: Re: БД в Qt5 (primeInsert(), insert()) Отправлено: Hellraiser от Июль 31, 2020, 16:41 Проверка:
Код: QSqlDatabase::database().driver().hasFeature(QSqlDriver::NamedPlaceholders) Название: Re: БД в Qt5 (primeInsert(), insert()) Отправлено: barm12345 от Июль 31, 2020, 16:45 Ок. Спасибо)
|