Михаиллл
Мамыр 16, 2020, 11: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, 4: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, 4:13 Т.Қ.
    • Жауап шешім ретінде белгіленді.

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

      Пікірлер

      Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
      Кіріңіз немесе Тіркеліңіз