[Interest] Qt Sql BLOB data converting

Henry Skoglund henry at tungware.se
Mon Nov 28 09:48:24 CET 2022


On 2022-11-28 09:32, Yauheni Pervenenka via Interest wrote:
> Hi, Tony, thanks for your reply,
> OS: win 11
> DB: SQLite
>
> Unfortunately, QVariant::toByteArray returns size 52(hex 104), 
> QVariant::toString returns size 30
>
> There is data returned by QVariant::toByteArray::toHex
> Qt data in hex(size 104):
> 763130492d46c2ab4cc29c7bc2b0efbfbd78c29b29c3ab1e4723dea6efbfbdefbfbdefbfbdefbfbd66c2a275efbfbdefbfbdc4a6
>
> Original value in hex 
> size(68): 763130492d46ab4c9c7bb0e9789b29c3ab1e4723dea6c8e5d2f9b266a275e1fbe4a6 
>
>
> there are some data that is parsed correct but time to time it is broken
>
>
>
> On Mon, Nov 28, 2022 at 11:17 AM Tony Rietwyk <tony at rightsoft.com.au> 
> wrote:
>
>     Hi Yauheni,
>
>     You don't say which type of database you are using?  There may be
>     issues
>     with the database client library altering the blob to UTF8. Though I
>     would expect the python code using the same client to have the same
>     problem.
>
>     Assuming that QVariant has the byte array unaltered, then
>     QVariant.toByteArray().length() should give 34.  Using qstrlen,
>     suggests
>     that you are using QVariant.toString instead.  To print the hex you
>     should just use QVariant.toByteArray().toHex().
>
>     Hope that helps,
>
>     Tony
>
>
>     On 28/11/2022 6:46 pm, Yauheni Pervenenka via Interest wrote:
>     > Hello, community
>     > I have faced with issue that qvariant using qstrlen for getting
>     data
>     > size, but sometimes it returns wrong size especially for BLOB
>     data(if
>     > there are some special symbols), are there any way to get data
>     correct?
>     >
>     > Note:
>     > Database value 34, python returns correct data size, but
>     > qvariant::toByteArray returns 52
>     >
>     > Python data and Database data in hex(size
>     >
>     68): 763130492d46ab4c9c7bb0e9789b29c3ab1e4723dea6c8e5d2f9b266a275e1fbe4a6
>     >
>     > Qt data in hex(size 104):
>     >
>     763130492d46c2ab4cc29c7bc2b0efbfbd78c29b29c3ab1e4723dea6efbfbdefbfbdefbfbdefbfbd66c2a275efbfbdefbfbdc4a6
>     >
>

Hi, most of the data is preserved in Qt but some other data is injected 
midstream.
Just a guess, but maybe the Qt version has a multithreading issue, like 
two threads are settings values in the same array at the same time.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20221128/19b2586f/attachment.htm>


More information about the Interest mailing list