sqlite насквозь текстовый. Преобразуйте в hex и будет вам счастье.
Никакой он не текстовый, бинарные данные хранит как положено и преобразовывать ничего не надо. Функция
sqlite3_bind_blob одним из параметров принимает размер данных.
И в драйвере, в зависимости от типа передаваемых данных используются нужные вызовы API:
C++ (Qt)
switch (value.type()) {
case QVariant::ByteArray: {
const QByteArray *ba = static_cast<const QByteArray*>(value.constData());
res = sqlite3_bind_blob(d->stmt, i + 1, ba->constData(),
ba->size(), SQLITE_STATIC);
break; }
Если не удаётся записать, может в QSqlQuery::bindValue() данные как-то неправильно передаете (напр., в виде
char* вместо
QByteArray)?
C++ (Qt)
QSqlQuery query;
query.exec("CREATE TABLE t ( "
" id INTEGER PRIMARY KEY, "
" data BLOB "
"); ");
QByteArray data;
data.resize(5);
data[0] = 1;
data[1] = 0;
data[2] = 1;
data[3] = 0;
data[4] = 1;
query.prepare("INSERT INTO t(data) VALUES(?);");
query.bindValue(0, QVariant(data));
query.exec();