44 lines
1.1 KiB
Plaintext
44 lines
1.1 KiB
Plaintext
= 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));
|
||
QSqlQuery query1;
|
||
query1.prepare(QString("INSERT INTO example (id, bin_data) VALUES(:id, :bin_data)");
|
||
query1.bindValue(":id", 10, QSql::In);
|
||
query1.bindValue(":bin_data", binDataArray, QSql::In | QSql::Binary);
|
||
query1.exec();
|
||
|
||
QSqlQuery query2;
|
||
query2.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();
|
||
----
|
||
|