diff --git a/wiki/Prog/Lang/CPP/Qt/Qt обмен бинарными данными с БД.adoc b/wiki/Prog/Lang/CPP/Qt/Qt обмен бинарными данными с БД.adoc new file mode 100644 index 0000000..609991b --- /dev/null +++ b/wiki/Prog/Lang/CPP/Qt/Qt обмен бинарными данными с БД.adoc @@ -0,0 +1,41 @@ += Qt: обмен бинарными данными с БД +:title-separator: {sp}| +:category: Программирование +:tags: программирование, qt, postgresql, бд + +Таблица, с которой осуществляется обмен: + +[source,sql] +---- +CREATE TABLE example ( + id INTEGER, + bin_data BYTEA +); +---- + +Запись данных: + +[source,cpp] +---- +const char cart[] = {0x04, 0x43, 0x00, 0x9A}; +QByteArray binDataArray(QByteArray::fromRawData(cart, 4)); +QSqlField dataField("bin_data", QVariant::ByteArray); +byteField.setValue(binDataArray); + +QSqlDatabase db = QSqlDatabase::database(); +QSqlQuery query; +query.exec(QString("INSERT INTO files VALUES(%1, %2);") + .arg(18) + .arg(db.driver()->formatValue(dataField))); +--- + +Чтение данных: + +[source,cpp] +--- +QSqlQuery query; +query.exec("SELECT id, bin_data FROM example LIMIT 1"); +query.next(); +QByteArray binDataArray = query.value(query.record().indexOf("bin_data")).toByteArray(); +--- +