<?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[MySQL, DB Row in String umwandeln]]></title><description><![CDATA[<p>Hallo,</p>
<p>irgendwie hänge ich hier gerade an ner sicher sehr einfachen Sache fest und komme nicht so richtig weiter. Ich hoffe mir kann jemand mal Helfen. Folgendes Problem:</p>
<p>(Linux g++)<br />
Ich mache eine MySQL Abfrage und bekomme dann die Ergebnisse von mysql_fetch_row in der Variable dbRow. Nun kann ich die ganz einfach per</p>
<pre><code class="language-cpp">printf(&quot;%s &quot;, dbRow[i]);
</code></pre>
<p>ausgeben. Brauche den Wert aber in einem String.</p>
<pre><code class="language-cpp">string buffer;
...
buffer = dbRow[i];
</code></pre>
<p>erzeugt &quot;Segmentation fault&quot;</p>
<p>wenn ich den dbRow in ein char* umwandeln will</p>
<pre><code class="language-cpp">char buffer(255);
sprintf(buffer, &quot;%c&quot;, dbRow[3]);
</code></pre>
<p>erscheint folgernder Fehler:</p>
<pre><code>MySQL.hpp: In member function âint MySQLConnectDB::FlagCheck(MYSQL*, std::string, std::string, std::string, std::string, std::string)â:
MySQL.hpp:346: error: invalid conversion from âcharâ to âchar*â
MySQL.hpp:346: error:   initializing argument 1 of âint sprintf(char*, const char*, ...)â
</code></pre>
<p>was mache ich Falsch???</p>
<p>Vielen Dank!</p>
<pre><code class="language-cpp">MYSQL_RES * dbResult;
MYSQL_ROW   dbRow;

...

fieldNumbers = mysql_num_fields(dbResult);
dbRow = mysql_fetch_row(dbResult);

printf(&quot;%s &quot;, zeile[i]);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/204501/mysql-db-row-in-string-umwandeln</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 14:43:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/204501.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 04 Feb 2008 09:19:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to MySQL, DB Row in String umwandeln on Mon, 04 Feb 2008 09:19:54 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>irgendwie hänge ich hier gerade an ner sicher sehr einfachen Sache fest und komme nicht so richtig weiter. Ich hoffe mir kann jemand mal Helfen. Folgendes Problem:</p>
<p>(Linux g++)<br />
Ich mache eine MySQL Abfrage und bekomme dann die Ergebnisse von mysql_fetch_row in der Variable dbRow. Nun kann ich die ganz einfach per</p>
<pre><code class="language-cpp">printf(&quot;%s &quot;, dbRow[i]);
</code></pre>
<p>ausgeben. Brauche den Wert aber in einem String.</p>
<pre><code class="language-cpp">string buffer;
...
buffer = dbRow[i];
</code></pre>
<p>erzeugt &quot;Segmentation fault&quot;</p>
<p>wenn ich den dbRow in ein char* umwandeln will</p>
<pre><code class="language-cpp">char buffer(255);
sprintf(buffer, &quot;%c&quot;, dbRow[3]);
</code></pre>
<p>erscheint folgernder Fehler:</p>
<pre><code>MySQL.hpp: In member function âint MySQLConnectDB::FlagCheck(MYSQL*, std::string, std::string, std::string, std::string, std::string)â:
MySQL.hpp:346: error: invalid conversion from âcharâ to âchar*â
MySQL.hpp:346: error:   initializing argument 1 of âint sprintf(char*, const char*, ...)â
</code></pre>
<p>was mache ich Falsch???</p>
<p>Vielen Dank!</p>
<pre><code class="language-cpp">MYSQL_RES * dbResult;
MYSQL_ROW   dbRow;

...

fieldNumbers = mysql_num_fields(dbResult);
dbRow = mysql_fetch_row(dbResult);

printf(&quot;%s &quot;, zeile[i]);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1448893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1448893</guid><dc:creator><![CDATA[fettyteddy2]]></dc:creator><pubDate>Mon, 04 Feb 2008 09:19:54 GMT</pubDate></item><item><title><![CDATA[Reply to MySQL, DB Row in String umwandeln on Mon, 04 Feb 2008 09:53:25 GMT]]></title><description><![CDATA[<p>Erst einmal wäre es sprintf(buffer, &quot;%s&quot;, ...) und nicht &quot;%c&quot;.<br />
Zweitens: Welchen Typ hat dbRow?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1448912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1448912</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Mon, 04 Feb 2008 09:53:25 GMT</pubDate></item><item><title><![CDATA[Reply to MySQL, DB Row in String umwandeln on Mon, 04 Feb 2008 09:54:20 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Das Problem an MYSQL_ROW ist, es ist kein nullterminierter String (kann aber sein). Deswegen muß man die schließende 0 noch anfügen. Das könnte man z.Bsp. so machen (ungetestet).</p>
<pre><code class="language-cpp">char* buffer;
MYSQL_ROW row;
unsigned long* lengths;
std::string res;
row = mysql_fetch_row (result);
lengths = mysql_fetch_lengths (result);
if (lengths[0] != 0)
{
   buffer = new char[lengths[0]+1];
   strncpy (buffer, row[0], lengths[0]);
   buffer[lengths[0&rsqb;&rsqb; = `\0';
   res = buffer;
   delete[] buffer;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1448913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1448913</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 04 Feb 2008 09:54:20 GMT</pubDate></item><item><title><![CDATA[Reply to MySQL, DB Row in String umwandeln on Mon, 04 Feb 2008 10:40:22 GMT]]></title><description><![CDATA[<p>Ich hab nochmal ein wenig getestet und das Problem ist folgendes:</p>
<p>das zuweisen in ein char geht:</p>
<pre><code class="language-cpp">MYSQL_RES * dbResult;
MYSQL_ROW   dbRow;
char buffer[255];

...

fieldNumbers = mysql_num_fields(dbResult);
dbRow = mysql_fetch_row(dbResult);

sprintf(buffer, &quot;%s&quot;, dbRow[3]);
</code></pre>
<p>Nun kommt aber das Problem &quot;Segmentation fault&quot; und zwar immer bei der Zeile sprintf(buffer, &quot;%s&quot;, dbRow[3]); wenn das auszulesene Feld Null ist.</p>
<p>Jetzt müsste ich das irgendwie abfangen.</p>
<p>In vielen Beispielen wird das mit</p>
<pre><code class="language-cpp">if (dbRow[i]==0) {
</code></pre>
<p>abgefangen. Funktioniert aber auch nicht, da der &quot;Segmentation fault&quot; dann an der if abfrage schon erscheint. Weis echt net wie ich das machen soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1448938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1448938</guid><dc:creator><![CDATA[fettyteddy2]]></dc:creator><pubDate>Mon, 04 Feb 2008 10:40:22 GMT</pubDate></item><item><title><![CDATA[Reply to MySQL, DB Row in String umwandeln on Mon, 04 Feb 2008 10:47:55 GMT]]></title><description><![CDATA[<p>1. Es ist nicht &quot;char&quot;, sondern ein Char-Array. Ein gewaltiger Unterschied.<br />
2. Wenn er bei der If-Abfrage scheitert, dann wohl deswegen weil:<br />
a) dbRow 0 ist, oder<br />
b) dbRow[i] außerhalb der Grenze liegt i also zu groß oder zu klein (&lt;0) ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1448945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1448945</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Mon, 04 Feb 2008 10:47:55 GMT</pubDate></item><item><title><![CDATA[Reply to MySQL, DB Row in String umwandeln on Mon, 04 Feb 2008 10:50:34 GMT]]></title><description><![CDATA[<p>Danke nochmal für die Antworten.</p>
<p>Also dbRow ist schon ein string habe ich gerade festgestellt.. das eigentliche Problem, ist der Null-Wert aus der Datenbank. Sobald Null aus der DB kommt und ich versuche irgendwie auf den String dbRow zuzugreifen erscheint die Meldung &quot;Segmentation fault&quot;.</p>
<p>Wie kann ich das abfangen? wenn selbst bei if (dbRow[i]==0) &quot;Segmentation fault&quot; erscheint?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1448947</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1448947</guid><dc:creator><![CDATA[fettyteddy2]]></dc:creator><pubDate>Mon, 04 Feb 2008 10:50:34 GMT</pubDate></item><item><title><![CDATA[Reply to MySQL, DB Row in String umwandeln on Mon, 04 Feb 2008 10:55:50 GMT]]></title><description><![CDATA[<p>zu 1. ja hast recht sorry Char-Array<br />
2. b) hab ich ausgeschlossen da das Char-Array so aussehen würde</p>
<p>dbRow[0] = &quot;Wert1&quot;<br />
dbRow[1] = &quot;Wert2&quot;<br />
dbRow[2] = Null<br />
dbRow[3] = &quot;Wert3&quot;</p>
<p>nun bleibt er bei dbRow[2] hängen. Wie kann ich das abfangen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1448951</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1448951</guid><dc:creator><![CDATA[fettyteddy2]]></dc:creator><pubDate>Mon, 04 Feb 2008 10:55:50 GMT</pubDate></item><item><title><![CDATA[Reply to MySQL, DB Row in String umwandeln on Mon, 04 Feb 2008 11:06:40 GMT]]></title><description><![CDATA[<p>Wenn (dbRow[2] == 0) zu einem Absturz führt, stimmt da was anderes nicht. Was sagt denn der Debugger?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1448959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1448959</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Mon, 04 Feb 2008 11:06:40 GMT</pubDate></item><item><title><![CDATA[Reply to MySQL, DB Row in String umwandeln on Mon, 04 Feb 2008 11:15:06 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">char **row = mysql_fetch_row (result);

string rowasstring (&quot;&quot;); //alternativ auch vector &lt;string&gt; rows; und rows.pushback (row[i]); dann brauchste aber nen else - weil sonst is bissl schwer zu sagen, ob das erste element jz wirklich das erste ist oder das zweite und das erste NULL war ^^
if (row[i]) //könntest auch schreiben: 'if (row[i][0])' macht meines Wissens keinen Unterschied... i hab ich einfach mal so genommen ^^
{
rowaasstring = row[i];
}
//wenn nicht, dann ist der string eben leer...
</code></pre>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1448963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1448963</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Mon, 04 Feb 2008 11:15:06 GMT</pubDate></item></channel></rss>