Михаиллл
16 мая 2020 г. 23:11

Как в postgresql сохранить QByteArray

Добрый день.
Создал в postgresql столбец типа oid для хранения QByteArray.
Почитал что oid аналог BLOD, самого BLOB у меня в базе нет.
Но при таком типе данных не могу записать QByteArray, получаю такую ошибку:


При этом с oid работает только такой запрос (в этот тип данных записывается только число):

  1. INSERT INTO public.categories(
  2. name, image)
  3. VALUES ( 'hh', 100);

Скажите пожалуйста как записывать QByteArray ? В какойто другой тип данных?

2

Вам это нравится? Поделитесь в социальных сетях!

2
ИП
  • 17 мая 2020 г. 16:05
  • (ред.)

Нужно использовать подготовленный запрос https://doc.qt.io/qt-5/qsqlquery.html
вот пример из документации

  1. QSqlQuery query;
  2. query.prepare("INSERT INTO person (id, forename, surname) "
  3. "VALUES (?, ?, ?)");
  4. query.addBindValue(1001);
  5. query.addBindValue("Bart");
  6. query.addBindValue("Simpson");
  7. query.exec();

addBindValue принимает тип QVariant, в него сохраняешь QByteArray и отправляешь в запрос

  1. QByteArray ba;// QByteArray который нужно сохранить
  2. ...
  3. Query query;
  4. query.prepare("INSERT INTO public.categories(name, image) VALUES ( 'hh', ?);");
  5. query.addBindValue(ba);
  6. //Ну или можно явно указать компилятору что хочешь сделать
  7. //query.addBindValue(QVariant(ba));
  8. query.exec();
  9.  
  10. ...
    Михаиллл
    • 17 мая 2020 г. 16:13
    • Ответ был помечен как решение.

    Я так и делал. Оказывается в постгри столбец нужно делать в формате bytea

      Комментарии

      Только авторизованные пользователи могут публиковать комментарии.
      Пожалуйста, авторизуйтесь или зарегистрируйтесь