Qt World Summit: Submit your Presentation

SQLite and boolean QVariant

  • I have a server app using PostgreSQL and client app using SQLite. Through the network i transfer data as a QList of QVariants. Boolean values fetched from PostgreSQL are transfered as QVariant( bool ). But when client app writes these values into SQLite db they are converted to QVariant( QString ) so records contain not 0 for false and 1 for true (as says SQLite reference) but 'true' for true and 'false' for false.
    Is this behavior intended or is it a bug?

  • It seems to be a bug. PostgreSQL has a boolean type, so it's ok how this works. SQLite does not have a boolean type:

    bq. From "Datatypes In SQLite Version 3":http://www.sqlite.org/datatype3.html
    SQLite does not have a separate Boolean storage class. Instead, Boolean values are stored as integers 0 (false) and 1 (true).

    I would expect Qt's SQL classes to convert the bool to an int (0 or 1) in this case.

    You might want to open a ticket in the "public bug tracker":http://bugreports.qt.nokia.com.

  • Found existing one: "QTBUG-15640":https://bugreports.qt.nokia.com/browse/QTBUG-15640

Log in to reply