0

QNetworkAccessManagerでダウンロードした画像データを挿入しようとしていますQByteArrayQByteArrayこれを BLOB として挿入しようとしています。私のテーブル作成クエリは

CREATE TABLE TILE_IMAGE(TILE_ID VARCHAR(1050), IMAGE_DATA BLOB,INSERTED_AT DATETIME,USED_AT DATETIME, PRIMARY KEY(TILE_ID))

このような挿入クエリを作成しました。

    query = QString("INSERT INTO ");
    query.append("TILE_IMAGE");
    query.append(QString("(TILE_ID, IMAGE_DATA ,INSERTED_AT ,USED_AT) VALUES(\'"));
    query.append(*tileId);
    query.append(QString("\',\'"));
    query.append(QString(*imageData));
    query.append(QString("\',DATETIME('NOW'),DATETIME('NOW'))"));

しかし、表示されるクエリを印刷すると、

"INSERT INTO TILE_IMAGE(TILE_ID, IMAGE_DATA ,INSERTED_AT ,USED_AT) VALUES('ivbase_TILED_MAP_VIEW_16_37396_22531','ÿØÿà',DATETIME('NOW'),DATETIME('NOW'))" 

BLOB データの長さはわずか 4 です。そして、いくつかの奇妙な値を持っています。内容のスクリーンショット*imageDataは、 ここに画像の説明を入力

画像の長さは 256*256*4 です。jpeg画像です。

編集: CL のコードに従ったところ、IMAGE_DATA 列にいくつかのダイアモン形状の文字が含まれるようになりました。画像は以下です。 ここに画像の説明を入力

4

2 に答える 2

0

blob のバイナリ コンテンツを文字列に変換することはできません。代わりにパラメーターを使用する必要があります。

QSqlQuery query;
query.prepare("INSERT INTO TILE_IMAGE(TILE_ID, IMAGE_DATA) VALUES(?,?)");
query.bindValue(0, *tileId);
query.bindValue(1, *imageData);
query.exec();
于 2013-07-11T07:43:00.943 に答える
0

どうやってそれができたのかというと

    QString query = QString("INSERT INTO ");
    query.append("TILE_IMAGE");
    query.append(QString("(TILE_ID, IMAGE_DATA ,INSERTED_AT ,USED_AT) VALUES(\'"));
    query.append(*tileId);
    query.append(QString("\',\'"));
    query.append(QString(imageData->toBase64()));
    query.append(QString("\',DATETIME('NOW'),DATETIME('NOW'))"));
    load(query, QUERY_TYPE_CHANGE,false);

このようにデータベースから読み取ると、まだひし形の文字が表示されていますが、うまくいきましたが、

    QString query;
    query = QString("SELECT");
    query.append(" IMAGE_DATA FROM TILE_IMAGE WHERE TILE_ID=\'");
    query.append(tileId).append(QString("\'"));
    int id = getId();
    load(query, id,true);
    query = resultList.value(0).toMap().value("IMAGE_DATA").value<QString>();
    QByteArray arr = QByteArray::fromBase64(query.toLatin1());

ひし形の文字が表示されている理由を知ることは役に立ちますか?

于 2013-07-21T05:21:37.403 に答える