No es posible almacenar datos binarios en sqlite usando QT

No se pueden almacenar todos los valores de datos binarios en la tabla sqlite3 usando QT.

Para ello, he creado una columna de datos BLOB para almacenar la tabla de datos binarios denominada como logTable. Estoy tratando de insertar datos binarios en binary_data [] buffer, con valores como 0x1 a 0xFF y 0x00 a 0xFF y así sucesivamente hasta 1024 bytes. Pero cuando ejecuto la consulta para almacenar los datos, la tabla muestra solo 0x1 a 0xFF, pero el carácter restante no se almacena (ya que el siguiente valor inmediato es 0x00). Quiero almacenar todos los valores de datos binarios?

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    conect_to_log_db("./log.db");

    unsigned char binary_data[1024];

    for(unsigned int i = 0, value = 1; i < 1024; i++, value++)
    {
        binary_data[i] = value;
    }
    store_to_log_db("01/02/2012,13:03:58", binary_data, 1024);
    ......
}


bool store_to_log_db(QString dateTime, unsigned char *data, unsigned int dataLength)
{
    QSqlQuery objQuery(objLogsDB);

    QString query = "CREATE TABLE IF NOT EXISTS logTable(logDateTime VARCHAR(19), packet BLOB, direction INTEGER)";
    objQuery.exec(query);

    QByteArray dataArr;
    dataArr.resize(dataLength);
    for(unsigned int i = 0; i < dataLength; i++)
    {
        dataArr[i] = data[i];
    }

    QVariant blobData = dataArr.data();

    objQuery.prepare("INSERT INTO logTable VALUES(:logDateTime,:packet,:direction)");
    objQuery.bindValue(":logDateTime",dateTime);
    objQuery.bindValue(":packet",blobData,QSql::In | QSql::Binary);
    objQuery.bindValue(":direction",1);

    qDebug() << objQuery.exec();

    return true;
}

después de ejecutar este código, el resultado de la tabla es de hasta 254 caracteres cuando imprimo desde sqlite usando

$ sqlite3 log.db

sqlite> .output try.txt

sqlite> select * from logTable;

$ ls -l try.txt

el tamaño es de 406 bytes

Respuestas a la pregunta(1)

Su respuesta a la pregunta