How I managed to do it is
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);
though it is still showing the diamond shaped characters when I read it from the database like this it worked,
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());
It will be helpful though to know why it is showing the diamond shaped characters?