MySQL: binäre Daten in DB schreiben



  • Hallo Zusammen,

    ich muss Binärdaten mittels der MySQL-C-Library in eine Datenbank schreiben (UPDATE bzw. INSERT). Das Lesen geht wie gewohnt, aber mit dem Schreiben komme ich nicht weiter, da man die binären Daten ja nicht in den Select-String schreiben kann. Es gibt zwar die Funktion "mysql_real_query", aber auch der muß ich einen Ascii String für UPDATE bzw. INSERT geben und wie soll MySQL da wissen wo die binären Daten anfangen und wo sie wieder zu Ende sind?!? Und dann muss hinter die Geschichte ja noch der WHERE-Teil, um die Zeile festzulegen... Wäre super, falls jemand eine Idee hätte! (Diese Anfrage habe ich auch im C/CLI - Forum gepostet, da ich dieses hier zu spät gesehen habe - sorry!)



  • Goofi schrieb:

    Hallo Zusammen,

    ich muss Binärdaten mittels der MySQL-C-Library in eine Datenbank schreiben (UPDATE bzw. INSERT). Das Lesen geht wie gewohnt, aber mit dem Schreiben komme ich nicht weiter, da man die binären Daten ja nicht in den Select-String schreiben kann.

    Das klingt ganz so, als ob Du Deine Statements für die Datenbank händisch zusammendengelst. Mit strcat() usw.
    So funktioniert, das aber nicht!

    Sondern so:
    1. erstell ein prepared statement
    2. erstell ein MYSQL_BIND struct und initialisier es mit Deinen Daten
    3. bind das struct aus 2 an Parameter aus dem prepared statement
    4. führ das statement aus



  • Furble Wurble schrieb:

    Goofi schrieb:

    Hallo Zusammen,

    ich muss Binärdaten mittels der MySQL-C-Library in eine Datenbank schreiben (UPDATE bzw. INSERT). Das Lesen geht wie gewohnt, aber mit dem Schreiben komme ich nicht weiter, da man die binären Daten ja nicht in den Select-String schreiben kann.

    Das klingt ganz so, als ob Du Deine Statements für die Datenbank händisch zusammendengelst. Mit strcat() usw.
    So funktioniert, das aber nicht!

    Sondern so:
    1. erstell ein prepared statement
    2. erstell ein MYSQL_BIND struct und initialisier es mit Deinen Daten
    3. bind das struct aus 2 an Parameter aus dem prepared statement
    4. führ das statement aus

    Vielen Dank für Deine Antwort! Ja stimmt, ich schraub' die Statements noch manuell zusammen - ist auch nicht so komlipziert...
    Nur das "prepared statement" und eine "MYSQL_BIND" Struktur ist mir noch nicht über den Weg gelaufen. Hast Du vielleicht ein kurzes Beispiel in C, so dass ich sehen kann, was es damit eigentlich auf sich hat? Wird da vielleicht eine Procedur auf dem Server erzeugt?



  • habe in der MySQL Doku ein Beispiel gefunden und probier das mal aus...
    Also, vielen Dank nochmal für de Hinweis!



  • Test erfolgreich! Da die Datenmenge recht groß ist mussten allerdings noch einige MySQL-Parameter in der ini umgestellt werden, aber jetzt läuft es! Mit den prepared statements! Sehr guter Tip! Vielen Dank!


Log in to reply