Binäre Werte in eine MySql-Datenbank schreiben / daraus lese
Verfasst: 22. März 2011 19:57
Ich habe ein Problem, bei dem ich momentan nicht weiterkomme:
Ich will in eine MYSql-Datenbank binäre Werte schreiben und daraus lesen.
Mit lesbaren Zeichen geht das vollkommen problemlos. Im konkreten Fall möchte ich jetzt ein Char-Feld von 128 bytes (die auch binär 0 enthalten können) per QSqlQuery in die Datenbank schreiben.
Die Daten schreibe ich in ein QByteArray. Reinschreiben und wieder Lesen funktioniert auch. Aber: wenn ich in dem ByteArray ein einziges Bit sitzen habe, dann sitzen beim Wieder lesen desselben Satzes (ggf) mehrere Bits. (Allerdings ist das Orginalbit jedesmal dabei). Warum ist mir völlig unklar.
Die Doku sagt zwar, daß man beim Zuweisen (per bindValue) sagen kann, daß die Daten binär sind und das sage ich auch (QSql Parameter Type: QSql::In | QSql::Binary). Beim Lesen kann ich aber nirgendwo sagen, daß ich Binärdaten erwarte (oder zumindest habe ich das noch nirgends gefunden), dies obwohl es auch den Parameter Typ QSql::Out gibt.
Ich habe es auch mit QBitArray probiert (wäre für mich einfacher). Dabei schreibe ich in die Datenbank dann den Typ QVariant::BitArray (=13). Wenn ich es wieder lese, dann erhalte ich QVariant::ByteArray (=12).
Ich habe jetzt schon eine ganze Menge Zeugs erfolglos ausprobiert und so langsam gehen mir die Ideen aus.
Kann mir jemand einen Tip geben?
Ich will in eine MYSql-Datenbank binäre Werte schreiben und daraus lesen.
Mit lesbaren Zeichen geht das vollkommen problemlos. Im konkreten Fall möchte ich jetzt ein Char-Feld von 128 bytes (die auch binär 0 enthalten können) per QSqlQuery in die Datenbank schreiben.
Die Daten schreibe ich in ein QByteArray. Reinschreiben und wieder Lesen funktioniert auch. Aber: wenn ich in dem ByteArray ein einziges Bit sitzen habe, dann sitzen beim Wieder lesen desselben Satzes (ggf) mehrere Bits. (Allerdings ist das Orginalbit jedesmal dabei). Warum ist mir völlig unklar.
Die Doku sagt zwar, daß man beim Zuweisen (per bindValue) sagen kann, daß die Daten binär sind und das sage ich auch (QSql Parameter Type: QSql::In | QSql::Binary). Beim Lesen kann ich aber nirgendwo sagen, daß ich Binärdaten erwarte (oder zumindest habe ich das noch nirgends gefunden), dies obwohl es auch den Parameter Typ QSql::Out gibt.
Ich habe es auch mit QBitArray probiert (wäre für mich einfacher). Dabei schreibe ich in die Datenbank dann den Typ QVariant::BitArray (=13). Wenn ich es wieder lese, dann erhalte ich QVariant::ByteArray (=12).
Ich habe jetzt schon eine ganze Menge Zeugs erfolglos ausprobiert und so langsam gehen mir die Ideen aus.
Kann mir jemand einen Tip geben?