<?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 und Borland]]></title><description><![CDATA[<p>Hallo ich habe folgendes Problem.</p>
<p>Ich habe mir eine Klasse geschrieben mit der ich auf eine MySQL Datenbank zugreifen möchte. Ich greife über die libmysql.dll auf die Funktionen zu.</p>
<p>Leider klappt der Teil ab mysql_fecth_row überhaupt nicht. dieser Teil bring meine Programm dauernd zu Absturz. Was mache ich falsch?</p>
<p>Danke für eure Hilfe</p>
<p>Anbei der Code meines Programms:</p>
<pre><code class="language-cpp">// main.cpp

#ifdef __BORLANDC__
	#pragma argsused
#endif
#include &lt;stdio.h&gt;
#include &quot;MDBConnector.h&quot;
int main(int argc, char* argv[])
{
	MDBConnector* mDBConnector = new MDBConnector();
	mDBConnector-&gt;SetDatabaseName(&quot;ausgaben&quot;);
	mDBConnector-&gt;SetUser(&quot;mike&quot;);
	mDBConnector-&gt;SetPassword(&quot;&quot;);
	mDBConnector-&gt;SetHost(&quot;localhost&quot;);
	mDBConnector-&gt;SetPort(3306);
	mDBConnector-&gt;Connect();

	if (mDBConnector-&gt;Execute(&quot;Select * from costs_t&quot;))
	{
	  printf(&quot;true&quot;);
	}
	system(&quot;PAUSE&quot;);
	delete mDBConnector;
	return 0;
}
</code></pre>
<pre><code class="language-cpp">// MDBConnector.h
#ifndef MDBCONNECTOR_H_
#define MDBCONNECTOR_H_

#include &lt;stdlib.h&gt;
#include &quot;MySQLDefs.h&quot;

class MDBConnector
{
	public:
		MDBConnector(void);
		~MDBConnector(void);

		void SetDatabaseName(std::string);
		void SetUser(std::string);
		void SetPassword(std::string);
		void SetHost(std::string);
		void SetPort(unsigned int);

		void Connect(void);
		void Close(void);
		bool Execute(std::string);

		unsigned int GetRowCount();
		unsigned int GetColCount();
	protected:
		void LoadFunctions();
		std::string mDatabaseName;
		std::string mUser;
		std::string mPassword;
		std::string mHost;

		MYSQL* mDatabaseHandle;

		unsigned int mPort;
		unsigned int mRows;
		unsigned int mCols;

		HINSTANCE mDll;
};

#endif //MDBCONNECTOR_H_
</code></pre>
<pre><code class="language-cpp">// MDBConnector.cpp
#include &quot;MDBConnector.h&quot;
#include &lt;stdio.h&gt;
MySQL_Init sql_init = NULL;
MySQL_Real_Connect sql_connect = NULL;
MySQL_Close sql_close = NULL;
MySQL_Query sql_query = NULL;
MySQL_Store_Result sql_store_result = NULL;
MySQL_Num_Fields sql_num_fields = NULL;
MySQL_Num_Rows sql_num_rows = NULL;
MySQL_Fetch_Fields sql_fetch_fields = NULL;
MySQL_Fetch_Row sql_fetch_row = NULL;
MySQL_Free_Result sql_free_result = NULL;
//==============================================================================
MDBConnector::MDBConnector()
	:	mDatabaseHandle(NULL),
		mDll(NULL),
		mRows(0),
		mCols(0)
{
	mDll = LoadLibrary(&quot;libmysql.dll&quot;);
	LoadFunctions();
}
//==============================================================================
MDBConnector::~MDBConnector()
{
	if (mDatabaseHandle)
	{
		Close();
	}
	FreeLibrary(mDll);
}
//==============================================================================
void MDBConnector::SetDatabaseName(std::string name)
{
	mDatabaseName = name;
}
//==============================================================================
void MDBConnector::SetUser(std::string user)
{
	mUser = user;
}
//==============================================================================
void MDBConnector::SetPassword(std::string password)
{
	mPassword = password;
}
//==============================================================================
void MDBConnector::SetHost(std::string host)
{
	mHost = host;
}
//==============================================================================
void MDBConnector::SetPort(unsigned int port)
{
	mPort = port;
}
//==============================================================================
void MDBConnector::Connect()
{
	if (mDll)
	{
		if (sql_init)
		{
			mDatabaseHandle = sql_init(NULL);
			if (mDatabaseHandle)
			{
				if (sql_connect)
				{
					MYSQL* result = sql_connect(
											mDatabaseHandle, &quot;localhost&quot;, &quot;mike&quot;, &quot;&quot;,
											&quot;ausgaben&quot;, 3306, NULL, 0
										);
					if (!result)
					{
						Close();
						//Fehlerbehandlung
					}
				}
				else
				{
					//Fehlerbehandlung
				}
			}
			else
			{
				//Fehlerbehandlung
			}
		}
		else
		{
			//Fehlerbehandlung
		}
	}
	else
	{
		//Fehlerbehandlung
	}

}
//==============================================================================
void MDBConnector::Close()
{
	if (mDll)
	{
		if (mDatabaseHandle)
		{
			if (mDatabaseHandle)
			{
				if (sql_close)
				{
					sql_close(mDatabaseHandle);
				}
				else
				{
					//Fehlerbehandlung
				}
			}
		}
	}
	else
	{
		//Fehlerbehandlung
	}

}
//==============================================================================
bool MDBConnector::Execute(std::string statement)
{
	int result = -1;
	if ((mDll) &amp;&amp; (mDatabaseHandle))
	{
		if (sql_query)
		{
			if (sql_query(mDatabaseHandle, &quot;Select * from costs_t&quot;) == 0)
			{
				if ((sql_store_result) &amp;&amp; (sql_free_result))
				{
					MYSQL_RES* res = sql_store_result(mDatabaseHandle);
					if (sql_num_fields)
					{
						mCols = sql_num_fields(res);
					}
					if (sql_num_rows)
					{
						mRows = sql_num_rows(res);
					}
					if (sql_fetch_row)
					{
						MYSQL_ROW row;
						while((row = sql_fetch_row(res)))
						{
							for (int c = 0; c &lt; mCols; c++)
							{
								printf(&quot;[%.*s] &quot;, row[c] ? row[c] : &quot;NULL&quot;);
							}
						}
					}
					sql_free_result(res);
				}
				return true;
			}
		}
		else
		{
			//Fehlerbehandlung
		}
	}
	return false;
}
//==============================================================================
unsigned int MDBConnector::GetRowCount()
{
	return mRows;
}
//==============================================================================
unsigned int MDBConnector::GetColCount()
{
	return mCols;
}
//==============================================================================
void MDBConnector::LoadFunctions()
{
	if (mDll)
	{
		sql_init = (MySQL_Init)GetProcAddress(mDll, &quot;mysql_init&quot;);
		sql_connect = (MySQL_Real_Connect)GetProcAddress(mDll, &quot;mysql_real_connect&quot;);
		sql_close = (MySQL_Close)GetProcAddress(mDll, &quot;mysql_close&quot;);
		sql_query = (MySQL_Query)GetProcAddress(mDll, &quot;mysql_query&quot;);
		sql_store_result = (MySQL_Store_Result)GetProcAddress(mDll, &quot;mysql_store_result&quot;);
		sql_num_fields =	(MySQL_Num_Fields)GetProcAddress(mDll, &quot;mysql_num_fields&quot;);
		sql_num_rows =	(MySQL_Num_Rows)GetProcAddress(mDll, &quot;mysql_num_rows&quot;);
		sql_fetch_fields = (MySQL_Fetch_Fields)GetProcAddress(mDll, &quot;mysql_fetch_fields&quot;);
		sql_fetch_row = (MySQL_Fetch_Row)GetProcAddress(mDll, &quot;mysql_fetch_row&quot;);
		sql_free_result = (MySQL_Free_Result)GetProcAddress(mDll, &quot;mysql_free_result&quot;);
	}
}
//==============================================================================
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/104315/mysql-und-borland</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Jul 2026 19:52:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/104315.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 18 Mar 2005 11:40:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to MySQL und Borland on Fri, 18 Mar 2005 11:40:30 GMT]]></title><description><![CDATA[<p>Hallo ich habe folgendes Problem.</p>
<p>Ich habe mir eine Klasse geschrieben mit der ich auf eine MySQL Datenbank zugreifen möchte. Ich greife über die libmysql.dll auf die Funktionen zu.</p>
<p>Leider klappt der Teil ab mysql_fecth_row überhaupt nicht. dieser Teil bring meine Programm dauernd zu Absturz. Was mache ich falsch?</p>
<p>Danke für eure Hilfe</p>
<p>Anbei der Code meines Programms:</p>
<pre><code class="language-cpp">// main.cpp

#ifdef __BORLANDC__
	#pragma argsused
#endif
#include &lt;stdio.h&gt;
#include &quot;MDBConnector.h&quot;
int main(int argc, char* argv[])
{
	MDBConnector* mDBConnector = new MDBConnector();
	mDBConnector-&gt;SetDatabaseName(&quot;ausgaben&quot;);
	mDBConnector-&gt;SetUser(&quot;mike&quot;);
	mDBConnector-&gt;SetPassword(&quot;&quot;);
	mDBConnector-&gt;SetHost(&quot;localhost&quot;);
	mDBConnector-&gt;SetPort(3306);
	mDBConnector-&gt;Connect();

	if (mDBConnector-&gt;Execute(&quot;Select * from costs_t&quot;))
	{
	  printf(&quot;true&quot;);
	}
	system(&quot;PAUSE&quot;);
	delete mDBConnector;
	return 0;
}
</code></pre>
<pre><code class="language-cpp">// MDBConnector.h
#ifndef MDBCONNECTOR_H_
#define MDBCONNECTOR_H_

#include &lt;stdlib.h&gt;
#include &quot;MySQLDefs.h&quot;

class MDBConnector
{
	public:
		MDBConnector(void);
		~MDBConnector(void);

		void SetDatabaseName(std::string);
		void SetUser(std::string);
		void SetPassword(std::string);
		void SetHost(std::string);
		void SetPort(unsigned int);

		void Connect(void);
		void Close(void);
		bool Execute(std::string);

		unsigned int GetRowCount();
		unsigned int GetColCount();
	protected:
		void LoadFunctions();
		std::string mDatabaseName;
		std::string mUser;
		std::string mPassword;
		std::string mHost;

		MYSQL* mDatabaseHandle;

		unsigned int mPort;
		unsigned int mRows;
		unsigned int mCols;

		HINSTANCE mDll;
};

#endif //MDBCONNECTOR_H_
</code></pre>
<pre><code class="language-cpp">// MDBConnector.cpp
#include &quot;MDBConnector.h&quot;
#include &lt;stdio.h&gt;
MySQL_Init sql_init = NULL;
MySQL_Real_Connect sql_connect = NULL;
MySQL_Close sql_close = NULL;
MySQL_Query sql_query = NULL;
MySQL_Store_Result sql_store_result = NULL;
MySQL_Num_Fields sql_num_fields = NULL;
MySQL_Num_Rows sql_num_rows = NULL;
MySQL_Fetch_Fields sql_fetch_fields = NULL;
MySQL_Fetch_Row sql_fetch_row = NULL;
MySQL_Free_Result sql_free_result = NULL;
//==============================================================================
MDBConnector::MDBConnector()
	:	mDatabaseHandle(NULL),
		mDll(NULL),
		mRows(0),
		mCols(0)
{
	mDll = LoadLibrary(&quot;libmysql.dll&quot;);
	LoadFunctions();
}
//==============================================================================
MDBConnector::~MDBConnector()
{
	if (mDatabaseHandle)
	{
		Close();
	}
	FreeLibrary(mDll);
}
//==============================================================================
void MDBConnector::SetDatabaseName(std::string name)
{
	mDatabaseName = name;
}
//==============================================================================
void MDBConnector::SetUser(std::string user)
{
	mUser = user;
}
//==============================================================================
void MDBConnector::SetPassword(std::string password)
{
	mPassword = password;
}
//==============================================================================
void MDBConnector::SetHost(std::string host)
{
	mHost = host;
}
//==============================================================================
void MDBConnector::SetPort(unsigned int port)
{
	mPort = port;
}
//==============================================================================
void MDBConnector::Connect()
{
	if (mDll)
	{
		if (sql_init)
		{
			mDatabaseHandle = sql_init(NULL);
			if (mDatabaseHandle)
			{
				if (sql_connect)
				{
					MYSQL* result = sql_connect(
											mDatabaseHandle, &quot;localhost&quot;, &quot;mike&quot;, &quot;&quot;,
											&quot;ausgaben&quot;, 3306, NULL, 0
										);
					if (!result)
					{
						Close();
						//Fehlerbehandlung
					}
				}
				else
				{
					//Fehlerbehandlung
				}
			}
			else
			{
				//Fehlerbehandlung
			}
		}
		else
		{
			//Fehlerbehandlung
		}
	}
	else
	{
		//Fehlerbehandlung
	}

}
//==============================================================================
void MDBConnector::Close()
{
	if (mDll)
	{
		if (mDatabaseHandle)
		{
			if (mDatabaseHandle)
			{
				if (sql_close)
				{
					sql_close(mDatabaseHandle);
				}
				else
				{
					//Fehlerbehandlung
				}
			}
		}
	}
	else
	{
		//Fehlerbehandlung
	}

}
//==============================================================================
bool MDBConnector::Execute(std::string statement)
{
	int result = -1;
	if ((mDll) &amp;&amp; (mDatabaseHandle))
	{
		if (sql_query)
		{
			if (sql_query(mDatabaseHandle, &quot;Select * from costs_t&quot;) == 0)
			{
				if ((sql_store_result) &amp;&amp; (sql_free_result))
				{
					MYSQL_RES* res = sql_store_result(mDatabaseHandle);
					if (sql_num_fields)
					{
						mCols = sql_num_fields(res);
					}
					if (sql_num_rows)
					{
						mRows = sql_num_rows(res);
					}
					if (sql_fetch_row)
					{
						MYSQL_ROW row;
						while((row = sql_fetch_row(res)))
						{
							for (int c = 0; c &lt; mCols; c++)
							{
								printf(&quot;[%.*s] &quot;, row[c] ? row[c] : &quot;NULL&quot;);
							}
						}
					}
					sql_free_result(res);
				}
				return true;
			}
		}
		else
		{
			//Fehlerbehandlung
		}
	}
	return false;
}
//==============================================================================
unsigned int MDBConnector::GetRowCount()
{
	return mRows;
}
//==============================================================================
unsigned int MDBConnector::GetColCount()
{
	return mCols;
}
//==============================================================================
void MDBConnector::LoadFunctions()
{
	if (mDll)
	{
		sql_init = (MySQL_Init)GetProcAddress(mDll, &quot;mysql_init&quot;);
		sql_connect = (MySQL_Real_Connect)GetProcAddress(mDll, &quot;mysql_real_connect&quot;);
		sql_close = (MySQL_Close)GetProcAddress(mDll, &quot;mysql_close&quot;);
		sql_query = (MySQL_Query)GetProcAddress(mDll, &quot;mysql_query&quot;);
		sql_store_result = (MySQL_Store_Result)GetProcAddress(mDll, &quot;mysql_store_result&quot;);
		sql_num_fields =	(MySQL_Num_Fields)GetProcAddress(mDll, &quot;mysql_num_fields&quot;);
		sql_num_rows =	(MySQL_Num_Rows)GetProcAddress(mDll, &quot;mysql_num_rows&quot;);
		sql_fetch_fields = (MySQL_Fetch_Fields)GetProcAddress(mDll, &quot;mysql_fetch_fields&quot;);
		sql_fetch_row = (MySQL_Fetch_Row)GetProcAddress(mDll, &quot;mysql_fetch_row&quot;);
		sql_free_result = (MySQL_Free_Result)GetProcAddress(mDll, &quot;mysql_free_result&quot;);
	}
}
//==============================================================================
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/747409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/747409</guid><dc:creator><![CDATA[ZuBesuch]]></dc:creator><pubDate>Fri, 18 Mar 2005 11:40:30 GMT</pubDate></item><item><title><![CDATA[Reply to MySQL und Borland on Fri, 18 Mar 2005 15:46:05 GMT]]></title><description><![CDATA[<p>ZuBesuch schrieb:</p>
<blockquote>
<p>Leider klappt der Teil ab mysql_fecth_row überhaupt nicht. dieser Teil bring meine Programm dauernd zu Absturz. Was mache ich falsch?</p>
</blockquote>
<p>Denke mal du hast hier nen tipfehler gemacht: mysql_fecth_row (im quellcode mysql_fetch_row). <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>Ne frage, wenn du mysql_fetch_row das erste mal benutzt, stürzt das Programm auch ab?<br />
Oder stürzt das Programm beim 2x benutzen von mysql_fetch_row ab?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/747671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/747671</guid><dc:creator><![CDATA[DJ BlackEagle]]></dc:creator><pubDate>Fri, 18 Mar 2005 15:46:05 GMT</pubDate></item><item><title><![CDATA[Reply to MySQL und Borland on Fri, 18 Mar 2005 17:43:11 GMT]]></title><description><![CDATA[<p>DJ BlackEagle schrieb:</p>
<blockquote>
<p>ZuBesuch schrieb:</p>
<blockquote>
<p>Leider klappt der Teil ab mysql_fecth_row überhaupt nicht. dieser Teil bring meine Programm dauernd zu Absturz. Was mache ich falsch?</p>
</blockquote>
<p>Denke mal du hast hier nen tipfehler gemacht: mysql_fecth_row (im quellcode mysql_fetch_row). <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>Ne frage, wenn du mysql_fetch_row das erste mal benutzt, stürzt das Programm auch ab?<br />
Oder stürzt das Programm beim 2x benutzen von mysql_fetch_row ab?</p>
</blockquote>
<p>Wenn ich debugge klappt es meistens das erste mal... danach nicht.<br />
Ich habe diesen teil</p>
<pre><code class="language-cpp">while((row = sql_fetch_row(res)))
{
     for (int c = 0; c &lt; mCols; c++)
     {
        printf(&quot;[%.*s] &quot;, row[c] ? row[c] : &quot;NULL&quot;);
     }
}
</code></pre>
<p>auch mal mit einer for-Schleife versucht und zwar folgendermaßen:</p>
<pre><code class="language-cpp">for (int r = 0; r &lt; mRows; r++)
{
     row = sql_fetch_row(res);
     for (int c = 0; c &lt; mCols; c++)
     {
        printf(&quot;[%.*s] &quot;, row[c] ? row[c] : &quot;NULL&quot;);
     }
}
</code></pre>
<p>Seltsamerweise wurde r beim ersten durchlauf dann automatisch ein eine zufallszahl gesetzt z.B.: 43465</p>
]]></description><link>https://www.c-plusplus.net/forum/post/747760</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/747760</guid><dc:creator><![CDATA[ZuBesuch]]></dc:creator><pubDate>Fri, 18 Mar 2005 17:43:11 GMT</pubDate></item><item><title><![CDATA[Reply to MySQL und Borland on Fri, 18 Mar 2005 18:23:19 GMT]]></title><description><![CDATA[<p>ZuBesuch schrieb:</p>
<blockquote>
<pre><code class="language-cpp">for (int r = 0; r &lt; mRows; r++)
{
     row = sql_fetch_row(res);
     for (int c = 0; c &lt; mCols; c++)
     {
        printf(&quot;[%.*s] &quot;, row[c] ? row[c] : &quot;NULL&quot;);
     }
}
</code></pre>
<p>Seltsamerweise wurde r beim ersten durchlauf dann automatisch ein eine zufallszahl gesetzt z.B.: 43465</p>
</blockquote>
<p>Mit der Zahl müßte nach for(xxx) r = 0 sein (Sprich in der Zeile row = sql_fetch_row(res); ).</p>
<p>ZuBesuch schrieb:</p>
<blockquote>
<p>if (sql_num_rows) &lt;-- macht mir sorgen<br />
{<br />
mRows = sql_num_rows(res);<br />
}<br />
if (sql_fetch_row) &lt;-- das ebenfalls<br />
{<br />
}</p>
</blockquote>
<p>Warum machen die 2 Dinge Sorgen?<br />
Wenn ich deine Methode Execute einmal aufrufe und dann nochmal aufrufe die Methode, dann kann der alte Wert drin stehen. Dann kann es zu ein Fehler kommen, wenn der Inhalt ungültig (alt) ist.</p>
<p>Und du solltest auch mal prüfen ob res ein gültigen Wert hat, wenn der Wert = NULL ist sollte du die while/for überspringen.</p>
<p>Tip du solltest das Init teil so machen:</p>
<pre><code class="language-cpp">MYSQL* pMySQL = mysql_init(NULL);
</code></pre>
<p>Bricht der Debugger in der Zeile ab:</p>
<pre><code class="language-cpp">while((row = sql_fetch_row(res)))
</code></pre>
<p>oder woanders? Wenn woanders, dann wo genau...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/747797</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/747797</guid><dc:creator><![CDATA[DJ BlackEagle]]></dc:creator><pubDate>Fri, 18 Mar 2005 18:23:19 GMT</pubDate></item><item><title><![CDATA[Reply to MySQL und Borland on Fri, 18 Mar 2005 22:09:18 GMT]]></title><description><![CDATA[<p>DJ BlackEagle schrieb:</p>
<blockquote>
<p>Bricht der Debugger in der Zeile ab:</p>
<pre><code class="language-cpp">while((row = sql_fetch_row(res)))
</code></pre>
<p>oder woanders? Wenn woanders, dann wo genau...</p>
</blockquote>
<p>Also der Fehler tritt auf wenn ich den inhalt von row[c] etwas zuweisen will.</p>
<p>z.B.</p>
<pre><code class="language-cpp">printf(&quot;[%.*s] &quot;, row[c] ? row[c] : &quot;NULL&quot;);
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">std::string str = row[c];
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">char str[256];
strcpy(str, row[c]);
</code></pre>
<p>Wenn ich aber folgendes mache:</p>
<pre><code class="language-cpp">printf(&quot;%s\n&quot;, row[c]);
</code></pre>
<p>klappt alles wie geschmiert.</p>
<p>Ich habe keine Ahnung warum.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/747972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/747972</guid><dc:creator><![CDATA[ZuBesuch]]></dc:creator><pubDate>Fri, 18 Mar 2005 22:09:18 GMT</pubDate></item><item><title><![CDATA[Reply to MySQL und Borland on Fri, 18 Mar 2005 22:22:32 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">printf(&quot;[%.*s] &quot;, row[c] ? row[c] : &quot;NULL&quot;);
</code></pre>
<p>ok. da weißt du auch nix zu.<br />
naja was du da machst ist auch falsch wie ich sehe. weil so geht eien if-short-conditional nicht.</p>
<p>so:</p>
<pre><code class="language-cpp">printf(&quot;[%s] &quot;, (row[c]) ? row[c] : &quot;NULL&quot;);
</code></pre>
<p>entsprechend anpassen.<br />
ich frag mich nur was &quot;%.*s&quot; zu bedeutet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/747978</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/747978</guid><dc:creator><![CDATA[DJ BlackEagle]]></dc:creator><pubDate>Fri, 18 Mar 2005 22:22:32 GMT</pubDate></item><item><title><![CDATA[Reply to MySQL und Borland on Sat, 19 Mar 2005 16:02:56 GMT]]></title><description><![CDATA[<p>DJ BlackEagle schrieb:</p>
<blockquote>
<pre><code class="language-cpp">printf(&quot;[%.*s] &quot;, row[c] ? row[c] : &quot;NULL&quot;);
</code></pre>
<p>ok. da weißt du auch nix zu.<br />
ich frag mich nur was &quot;%.*s&quot; zu bedeutet.</p>
</blockquote>
<p>Hi Sorry,</p>
<p>ich habe mich vertippt. Richtig muss es heißen:</p>
<pre><code class="language-cpp">if (sql_fetch_row)
{
   MYSQL_ROW row;
   while((row = sql_fetch_row(res)))
   {
      unsigned long *laengen;
      laengen = sql_fetch lengths(res);
      for (int c = 0; c &lt; mCols; c++)
      {
         printf(&quot;[%.*s] &quot;, laengen[i], row[c] ? row[c] : &quot;NULL&quot;);
      }
   }
}
</code></pre>
<p>sql_fetch_lengths is ein typedef für mysql_fetch_lengths.</p>
<p>So klappt das dann auch, nur kann ich den Wert immernoch nicht einem std::string zuweisen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/748303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/748303</guid><dc:creator><![CDATA[ZuBesuch]]></dc:creator><pubDate>Sat, 19 Mar 2005 16:02:56 GMT</pubDate></item><item><title><![CDATA[Reply to MySQL und Borland on Sat, 19 Mar 2005 20:33:06 GMT]]></title><description><![CDATA[<p>Das<br />
[cpp]<br />
if (sql_fetch_row)<br />
{<br />
MYSQL_ROW row;<br />
while((row = sql_fetch_row(res)))<br />
{<br />
unsigned long *laengen;<br />
laengen = sql_fetch lengths(res);<br />
for (int c = 0; c &lt; mCols; c++)<br />
{<br />
printf(&quot;[%.*s] &quot;, laengen[i], <strong>row[c]</strong> ? row[c] : &quot;NULL&quot;);<br />
}<br />
}<br />
}<br />
[/cpp]</p>
<p>zu</p>
<pre><code class="language-cpp">if (sql_fetch_row)
{
   MYSQL_ROW row;
   while((row = sql_fetch_row(res)))
   {
      unsigned long *laengen;
      laengen = sql_fetch lengths(res);
      for (int c = 0; c &lt; mCols; c++)
      {
         printf(&quot;[%.*s] &quot;, laengen[i], (row[c]) ? row[c] : &quot;NULL&quot;);
      }
   }
}
</code></pre>
<p>Weil</p>
<pre><code class="language-cpp">(row[c]) ? row[c] : &quot;NULL&quot;;
</code></pre>
<p>ist ein if-short-conditional.</p>
<p>Das würde so aussehen:</p>
<pre><code class="language-cpp">peter = (row[c]) ? row[c] : &quot;NULL&quot;;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/748506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/748506</guid><dc:creator><![CDATA[DJ BlackEagle]]></dc:creator><pubDate>Sat, 19 Mar 2005 20:33:06 GMT</pubDate></item></channel></rss>