<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[BLOB-Felder mit der mysql.h C-API]]></title><description><![CDATA[<p>Moin,</p>
<p>ich stehe gerade vor dem Problem, Daten in ein BLOB-Feld einer MySQL-DB zu speichern.<br />
Das sollen jetzt Bilder, Word-Docs, PDFs oder sonstwas sein, also irgendwelche Datein. Meine Frage ist nun: Wie stelle ich das Senden der Datei über eine Query an?</p>
<p>normalerweise geht das ja mit &quot;insert into table values('tolles value');&quot;. wie ist das jetzt bei Datein? Muss ich die Datei ins RAM laden und als char* in die Query übergeben?<br />
Wenn ja: BLOBs können ja bis zu 4GB groß werden. Nicht das ich so was benötige, aber wie würde man solche BLOB-Felder lesen oder schreiben? Hat ja keiner soviel RAM, das die Datei auf anhieb ins RAM passt.<br />
Oder kann ich nen FileStream oder sowas an die Query übergeben?</p>
<p>Sollte das mit dem Speichern dann jemals klappen, muss ich die Daten natürlich auch wieder auslesen. Darum meine Frage hinterher: Wie würde das dann laufen, das ich das File wieder als Datei auf Platte bekomme.</p>
<p>Zur info: Dateiinformationen werden in einem extra Feld gespeichert. es geht mir nur um den reinen Dateiinhalt.</p>
<p>Viel spass beim Mitdenken <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/94793/blob-felder-mit-der-mysql-h-c-api</link><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Jul 2026 02:46:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/94793.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 13 Dec 2004 07:18:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to BLOB-Felder mit der mysql.h C-API on Mon, 13 Dec 2004 07:18:34 GMT]]></title><description><![CDATA[<p>Moin,</p>
<p>ich stehe gerade vor dem Problem, Daten in ein BLOB-Feld einer MySQL-DB zu speichern.<br />
Das sollen jetzt Bilder, Word-Docs, PDFs oder sonstwas sein, also irgendwelche Datein. Meine Frage ist nun: Wie stelle ich das Senden der Datei über eine Query an?</p>
<p>normalerweise geht das ja mit &quot;insert into table values('tolles value');&quot;. wie ist das jetzt bei Datein? Muss ich die Datei ins RAM laden und als char* in die Query übergeben?<br />
Wenn ja: BLOBs können ja bis zu 4GB groß werden. Nicht das ich so was benötige, aber wie würde man solche BLOB-Felder lesen oder schreiben? Hat ja keiner soviel RAM, das die Datei auf anhieb ins RAM passt.<br />
Oder kann ich nen FileStream oder sowas an die Query übergeben?</p>
<p>Sollte das mit dem Speichern dann jemals klappen, muss ich die Daten natürlich auch wieder auslesen. Darum meine Frage hinterher: Wie würde das dann laufen, das ich das File wieder als Datei auf Platte bekomme.</p>
<p>Zur info: Dateiinformationen werden in einem extra Feld gespeichert. es geht mir nur um den reinen Dateiinhalt.</p>
<p>Viel spass beim Mitdenken <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/672054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/672054</guid><dc:creator><![CDATA[-**xXx**-]]></dc:creator><pubDate>Mon, 13 Dec 2004 07:18:34 GMT</pubDate></item><item><title><![CDATA[Reply to BLOB-Felder mit der mysql.h C-API on Mon, 13 Dec 2004 11:34:07 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Wenn du die BDE mit TTable/TQuery benutzt, kannst du die Mehtoden von TBlobField benutzen :</p>
<pre><code class="language-cpp">TTable *Table;
TBlobField *BlobField;
...
BlobField = dynamic_cast&lt;TBlobField *&gt; (Table-&gt;FieldByName(&lt;FeldName&gt;));
if (BlobField != NULL)
{
  BlobField-&gt;LoadFromFile(&lt;FileName&gt;);
  BlobField-&gt;SaveToFile(&lt;FileName&gt;);
  }
...
</code></pre>
<p>Allerdings hatte ich damit ein Problem, Dateien größer als ca. 1 MByte zu speichern, da der MySQL-Server eine Grenze für die Größe der Befehle hat.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/672162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/672162</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 13 Dec 2004 11:34:07 GMT</pubDate></item><item><title><![CDATA[Reply to BLOB-Felder mit der mysql.h C-API on Mon, 13 Dec 2004 13:03:50 GMT]]></title><description><![CDATA[<p>Die Komponenten benutze ich aber nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Hatte mir auch schon überlegt die ganze Datei in einen String zu laden und das als Query zu schicken. Aber wie gesagt finde ich das irgendwie nicht so elegand wenn ich jetzt theoretisch 4GB schicken würde.<br />
Aber wenn ich das jetzt richtig verstehen, macht die Komponente im prinzip genau das (wegen der 1MB Grenze), oder..... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Edit:<br />
Also wäre eine Möglichkeit, das ich ne schleife mache und immer, sagen wir mal, 500kb als query schicke und das an das BLOB-Feld dranhänge... so eine Art Filestream im Eigenbau. Oder gibts noch andere Vorschläge?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/672220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/672220</guid><dc:creator><![CDATA[-**xXx**-]]></dc:creator><pubDate>Mon, 13 Dec 2004 13:03:50 GMT</pubDate></item><item><title><![CDATA[Reply to BLOB-Felder mit der mysql.h C-API on Mon, 13 Dec 2004 13:10:27 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>Hatte mir auch schon überlegt die ganze Datei in einen String zu laden und das als Query zu schicken. Aber wie gesagt finde ich das irgendwie nicht so elegand wenn ich jetzt theoretisch 4GB schicken würde.<br />
Aber wenn ich das jetzt richtig verstehen, macht die Komponente im prinzip genau das (wegen der 1MB Grenze), oder..... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Darauf läuft es hinaus. Du machst eine SQL-Anweisung</p>
<pre><code>UPDATE &lt;TableName&gt; WHERE &lt;Condition&gt; SET &lt;FieldName&gt; = '&lt;Dateiinhalt&gt;'
</code></pre>
<p>&lt;Dateiinhalt&gt; sollte keine Steuerzeichen enthalten, denke ich.<br />
Wegen der Grenze : Die ist bei meinen SQL-Server unter dem Parameter 'max_allowed_packet' eingetragen. Wenn du die ändern kannst (sei bloß vorsichtig) kannst du ja einen höheren Wert eintragen.<br />
Ich bezweifle, das das mit dem Streamen etwas wird. Man kann Felder nur auf einmal ändern, und nichts dranhängen. Oder?</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/672225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/672225</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 13 Dec 2004 13:10:27 GMT</pubDate></item><item><title><![CDATA[Reply to BLOB-Felder mit der mysql.h C-API on Mon, 13 Dec 2004 15:47:11 GMT]]></title><description><![CDATA[<p>Joa mist.....<br />
Zahle-Felder lassen sich addieren, Strings nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Das mit den Steuerzeichen ist kein Problem, dafür gibts ne Funktion mit der ich einen String in einen schönen Query-Konformen String umwandeln kann. An die Datenbank bzw an max_allowed_packet komme ich auch dran, aber so schön finde ich das jetzt noch nicht... naja mal sehen. erstmal wirds so gehen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/672408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/672408</guid><dc:creator><![CDATA[-**xXx**-]]></dc:creator><pubDate>Mon, 13 Dec 2004 15:47:11 GMT</pubDate></item></channel></rss>