<?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[ODBC und MFC (Datenbank ansprechen)]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich muss mein Thema aus dem Forum Datenbanken hier nochmal aufnehmen. Ich habe einen MySQL-Datenbank-Server (Version 5.0) auf meinem Rechner laufen und will per ODBC drauf zugreifen. Der ODBC Treiber (Version 3.51) ist korrekt installiert und dort wird auch beim Verbindungstest kein Fehler angezeigt.<br />
Will ich jetzt ein MFC-Projekt mit Datenbankunterstützung erstellen, kann ich irgendwie nicht auf die DB zugreifen. Ebenso ist es, wenn man eine ODBC-Consumer-Klasse einfügen will. Ich habe ein anderes ODBC-basierendes Projekt auf die MySQL-DB umgeschrieben. Bei Codeproject gibts einen Thread der die entsprechenden Connection-Strings beschreibt. Beim Starten erscheint nur ein leeres Medlungsfenster ohne Text. Im Debugfenster steht dann folgendes:</p>
<blockquote>
<p>'MySQLTest.exe': 'C:\WINNT\system32\ODBCCR32.dll' geladen, Keine Symbole geladen.<br />
DBMS: MySQL<br />
Version: 5.0.24a-community-nt<br />
ODBC Driver Manager Version: 03.52.0000<br />
CmySQLTestSet::GetDefaultSQL()<br />
Eine Ausnahme (erste Chance) bei 0x77e9bc81 in MySQLTest.exe: Microsoft C++ exception: CODBCException @ 0x0012f6ec.<br />
Eine Ausnahme (erste Chance) bei 0x77e9bc81 in MySQLTest.exe: Microsoft C++ exception: CDBException @ 0x0012f724.<br />
Eine Ausnahme (erste Chance) bei 0x77e9bc81 in MySQLTest.exe: Microsoft C++ exception: [rethrow] @ 0x00000000.<br />
'MySQLTest.exe': 'C:\WINNT\MUI\fallback\0407\msctf.dll.mui' geladen, Keine Symbole geladen.<br />
'MySQLTest.exe': 'C:\Programme\Logitech\MouseWare\system\LGMOUSHK.DLL' geladen, Keine Symbole geladen.<br />
Warning: Uncaught exception in WindowProc (returning 0).<br />
'MySQLTest.exe': 'C:\WINNT\system32\ODBCCR32.dll' entladen<br />
'MySQLTest.exe': 'C:\WINNT\system32\mfc42.dll' entladen<br />
'MySQLTest.exe': 'C:\WINNT\system32\mfc42loc.dll' entladen<br />
'MySQLTest.exe': 'C:\WINNT\system32\myodbc3.dll' entladen<br />
'MySQLTest.exe': 'C:\WINNT\system32\wshtcpip.dll' entladen<br />
'MySQLTest.exe': 'C:\WINNT\system32\RNR20.DLL' entladen<br />
'MySQLTest.exe': 'C:\WINNT\system32\winrnr.dll' entladen<br />
Der Thread 'Win32 Thread' (0x1dc) hat mit Code 0 (0x0) geendet.<br />
Der Thread 'Win32 Thread' (0x2a8) hat mit Code 0 (0x0) geendet.<br />
Das Programm &quot;[848] MySQLTest.exe: Systemeigen&quot; wurde mit Code 0 (0x0) beendet.</p>
</blockquote>
<p>Woher kommen die Exceptions und wie kann ich das Problem lösen?</p>
<p>Habs jetzt mal mit OLE DB versucht, da scheint es zu funktionieren. Ist jemanden so was schon bekannt?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/162008/odbc-und-mfc-datenbank-ansprechen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Apr 2026 15:41:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/162008.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 13 Oct 2006 13:37:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ODBC und MFC (Datenbank ansprechen) on Fri, 13 Oct 2006 13:37:34 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich muss mein Thema aus dem Forum Datenbanken hier nochmal aufnehmen. Ich habe einen MySQL-Datenbank-Server (Version 5.0) auf meinem Rechner laufen und will per ODBC drauf zugreifen. Der ODBC Treiber (Version 3.51) ist korrekt installiert und dort wird auch beim Verbindungstest kein Fehler angezeigt.<br />
Will ich jetzt ein MFC-Projekt mit Datenbankunterstützung erstellen, kann ich irgendwie nicht auf die DB zugreifen. Ebenso ist es, wenn man eine ODBC-Consumer-Klasse einfügen will. Ich habe ein anderes ODBC-basierendes Projekt auf die MySQL-DB umgeschrieben. Bei Codeproject gibts einen Thread der die entsprechenden Connection-Strings beschreibt. Beim Starten erscheint nur ein leeres Medlungsfenster ohne Text. Im Debugfenster steht dann folgendes:</p>
<blockquote>
<p>'MySQLTest.exe': 'C:\WINNT\system32\ODBCCR32.dll' geladen, Keine Symbole geladen.<br />
DBMS: MySQL<br />
Version: 5.0.24a-community-nt<br />
ODBC Driver Manager Version: 03.52.0000<br />
CmySQLTestSet::GetDefaultSQL()<br />
Eine Ausnahme (erste Chance) bei 0x77e9bc81 in MySQLTest.exe: Microsoft C++ exception: CODBCException @ 0x0012f6ec.<br />
Eine Ausnahme (erste Chance) bei 0x77e9bc81 in MySQLTest.exe: Microsoft C++ exception: CDBException @ 0x0012f724.<br />
Eine Ausnahme (erste Chance) bei 0x77e9bc81 in MySQLTest.exe: Microsoft C++ exception: [rethrow] @ 0x00000000.<br />
'MySQLTest.exe': 'C:\WINNT\MUI\fallback\0407\msctf.dll.mui' geladen, Keine Symbole geladen.<br />
'MySQLTest.exe': 'C:\Programme\Logitech\MouseWare\system\LGMOUSHK.DLL' geladen, Keine Symbole geladen.<br />
Warning: Uncaught exception in WindowProc (returning 0).<br />
'MySQLTest.exe': 'C:\WINNT\system32\ODBCCR32.dll' entladen<br />
'MySQLTest.exe': 'C:\WINNT\system32\mfc42.dll' entladen<br />
'MySQLTest.exe': 'C:\WINNT\system32\mfc42loc.dll' entladen<br />
'MySQLTest.exe': 'C:\WINNT\system32\myodbc3.dll' entladen<br />
'MySQLTest.exe': 'C:\WINNT\system32\wshtcpip.dll' entladen<br />
'MySQLTest.exe': 'C:\WINNT\system32\RNR20.DLL' entladen<br />
'MySQLTest.exe': 'C:\WINNT\system32\winrnr.dll' entladen<br />
Der Thread 'Win32 Thread' (0x1dc) hat mit Code 0 (0x0) geendet.<br />
Der Thread 'Win32 Thread' (0x2a8) hat mit Code 0 (0x0) geendet.<br />
Das Programm &quot;[848] MySQLTest.exe: Systemeigen&quot; wurde mit Code 0 (0x0) beendet.</p>
</blockquote>
<p>Woher kommen die Exceptions und wie kann ich das Problem lösen?</p>
<p>Habs jetzt mal mit OLE DB versucht, da scheint es zu funktionieren. Ist jemanden so was schon bekannt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1154121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1154121</guid><dc:creator><![CDATA[AndyDD]]></dc:creator><pubDate>Fri, 13 Oct 2006 13:37:34 GMT</pubDate></item><item><title><![CDATA[Reply to ODBC und MFC (Datenbank ansprechen) on Fri, 13 Oct 2006 13:51:07 GMT]]></title><description><![CDATA[<p>Versuch mal, die Exceptions zu fangen. <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/1154131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1154131</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Fri, 13 Oct 2006 13:51:07 GMT</pubDate></item><item><title><![CDATA[Reply to ODBC und MFC (Datenbank ansprechen) on Fri, 13 Oct 2006 14:18:34 GMT]]></title><description><![CDATA[<p>estartu schrieb:</p>
<blockquote>
<p>Versuch mal, die Exceptions zu fangen. <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>
</blockquote>
<p>Wenn ich wüsste, wo die geworfen werden? Ich habe jediglich eine Klasse, die von CRecordset abgeleitet ist. In der gibts folgende Methode, die ja vom Assistenen (und von mir) überschreiben worde:</p>
<pre><code class="language-cpp">CString CMySQLTestSet::GetDefaultConnect()
{
	TRACE(&quot;CMySQLTestSet::GetDefaultConnect()\n&quot;);
		return _T(&quot;Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=test;User=root;Password=mypasswd;Option=3;&quot;);

}
</code></pre>
<p>Die Exception wird nach dem Starten der Anwendung nach Ausführung dieser Methode geworfen. Sie führt aber nicht zum Abbruch des Programms. Wenn man dann Zugriffe auf die DB durchführen will kommt das gleiche Problem. Es erscheint immer ein ca. 3x2cm großes leeres Meldungsfenster mit dem roten Symbol. Komisch ist auch wenn man es mit dem Assistenten anlegen will, dann kommt immer bei der Auswahl der im Treiber angelegten Datenquelle die Meldung: &quot;Loading database list not implemented for SQLDriverConnect()&quot; und dann hat er natürlich keine Datenquelle wählen können. Hat das was mit dem Treiber oder dem Visual Studio zu tun? Verwende VS .net 2003</p>
<p>Bin etwas ratlos, so viel Ahnung habe ich auch nicht davon. Kann es noch irgendwie an falsch gesetzten Rechten liegen? Jemand hat mir noch gesagt, dass eventuell der Treiber kein &quot;SHOW DATABASES&quot; ausführen kann. Wo kann man das einstellen und warum funktionierts beim Anlegen der Quelle im ODBC-Treiber?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1154153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1154153</guid><dc:creator><![CDATA[AndyDD]]></dc:creator><pubDate>Fri, 13 Oct 2006 14:18:34 GMT</pubDate></item><item><title><![CDATA[Reply to ODBC und MFC (Datenbank ansprechen) on Fri, 13 Oct 2006 15:16:12 GMT]]></title><description><![CDATA[<p>Schau dir doch mal den Callstack an, während die leere Meldung gezeigt wird.<br />
Evtl. wäre der Callstack von GetDefaultSQL auch ein Ansatz.</p>
<p>Machst du denn irgendwo ein Open oder so? Dann würde das try-catch da drum gehören. <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/1154214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1154214</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Fri, 13 Oct 2006 15:16:12 GMT</pubDate></item><item><title><![CDATA[Reply to ODBC und MFC (Datenbank ansprechen) on Mon, 16 Oct 2006 05:59:06 GMT]]></title><description><![CDATA[<p>estartu schrieb:</p>
<blockquote>
<p>Schau dir doch mal den Callstack an, während die leere Meldung gezeigt wird.<br />
Evtl. wäre der Callstack von GetDefaultSQL auch ein Ansatz.</p>
<p>Machst du denn irgendwo ein Open oder so? Dann würde das try-catch da drum gehören. <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>
</blockquote>
<p>Der letzte Eintrag ist ca. die 10 Zeile aus meinem letzten Post, die dann noch im Aufruffenster steht. Ich mache weder ein Open noch sonst was, es wird einfach eine Instanz der im Programm erzeugten Klasse angelegt, die von CRecordset abgeleitet ist. Offensichtlich löst der Konstruktor das aus. So tief bin ich da auch noch nicht reingestiegen. Das mit dem try/catch versuche ich ja eigentlich immer konsequent durchzuziehen, nur bin ich noch nicht mal soweit damit zu arbeiten. Hast du noch eine Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1155378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1155378</guid><dc:creator><![CDATA[AndyDD]]></dc:creator><pubDate>Mon, 16 Oct 2006 05:59:06 GMT</pubDate></item><item><title><![CDATA[Reply to ODBC und MFC (Datenbank ansprechen) on Mon, 16 Oct 2006 06:40:42 GMT]]></title><description><![CDATA[<p>Wenn Du einen Breakpoint auf den GetDefaultConnect setzt, dann kannst Du durch den Code weiter durch tracen bis Du an die Open Stelle kommst. Ich vermute das evtl. Dein Connection String falsch ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1155392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1155392</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 16 Oct 2006 06:40:42 GMT</pubDate></item><item><title><![CDATA[Reply to ODBC und MFC (Datenbank ansprechen) on Mon, 16 Oct 2006 06:43:52 GMT]]></title><description><![CDATA[<p>Die vielen Zeilen in deinem ersten Post sind nicht der Callstack sondern die Debugausgabe. <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>Klick mal (während das Debuggen läuft) irgendwo mit der rechten Maustaste auf eine leere Stelle einer Symbolleiste.<br />
Dann klick da mal auf Callstack bzw. Aufrufliste. Dann sollte die erscheinen oder verschwinden. Wenn du sie weggeschaltet hast, schalte sie wieder dazu.<br />
Nun guck DAS Fenster im Zusammenhang mit meinem letzten Post nochmal an. <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/1155394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1155394</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Mon, 16 Oct 2006 06:43:52 GMT</pubDate></item><item><title><![CDATA[Reply to ODBC und MFC (Datenbank ansprechen) on Mon, 16 Oct 2006 07:31:14 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/35992">@Martin</a>: Das vermute ich auch. Ich habe schon ziemlich viele Varianten durchprobiert, aber keine funktioniert. Als Quelle habe ich zum einen die Seite <a href="http://www.connectionstrings.com" rel="nofollow">www.connectionstrings.com</a> und zum anderen einen Thread auf codeproject genommen. Dort war erklärt was die Parameter machen. Wenn man ein wenig damit probiert hat man vom Programmabsturz bis zum dem beschriebenen alles dabei.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/4897">@estartu</a>: Sorry, war immer der Meinung callstack und Ausgabefenster wären das gleiche. So, hab mir das mal angeschaut, kann aber nix damit anfangen. Wenn das Meldungsfenster erzeugt wird befindet er sich gerade in der wincore.cpp, Zeile 249. Dort hin kommt er, weil in der dbcore.cpp eine Routine CRecordset::AllocHstmt() abegearbeitet wird, die nach der Zeile 2341 die Funktion Open aufruft. Leider hab ich von dem ganzen überhaupt keine Ahnung.<br />
Wie es weiterhin aussieht scheint die Funktion CRecordView::OnInitialUpdate() in Zeile 63 die Openfunktion auszulösen.<br />
Die Zeilenangaben sind sicher nur für meine Version (VS <a href="http://2003.net" rel="nofollow">2003.net</a>) gültig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1155423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1155423</guid><dc:creator><![CDATA[AndyDD]]></dc:creator><pubDate>Mon, 16 Oct 2006 07:31:14 GMT</pubDate></item><item><title><![CDATA[Reply to ODBC und MFC (Datenbank ansprechen) on Mon, 16 Oct 2006 07:32:07 GMT]]></title><description><![CDATA[<p>Schau mal ins Artikelforum, da gibt es von mir einen Artikel zum Debuggen.<br />
Vielleicht findest du da ja was.</p>
<p>Wenn du mit dem Callstack arbeitest ist das sinnvollste, dort erstmal eine Zeile zu suchen, die aussieht als wäre sie von dir und diese doppelt zu klicken. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Von dort aus kann man sich dann langsam wieder tiefer in die MFC vorarbeiten.</p>
<p>Das ist aber alles nur Stochern im Nebel, ne konkrete Idee habe ich leider 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="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1155426</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1155426</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Mon, 16 Oct 2006 07:32:07 GMT</pubDate></item><item><title><![CDATA[Reply to ODBC und MFC (Datenbank ansprechen) on Mon, 16 Oct 2006 07:46:58 GMT]]></title><description><![CDATA[<p>naja, woher der open-Aufruf kommt ist jetzt sicher klar. Wenn man ein SDI-Projekt mit Datenbankunterstützung anlegt, so nimmt der Assistent immer die View-Klasse CRecordView. Die will ja nach Erstellen des Hauptfensters den ersten Datensatz anzeigen und muss logischerweise die DB öffnen um den ersten Datensatz zu lesen. Ich hab jetzt mal probiert einen weiteren Openbefehl als Reaktion auf ein Buttonereignis zu auszuführen, da gibts das gleiche Bild. Wird wohl doch was dran sein, dass der Connectionstring nicht stimmt.<br />
Aber sind noch folgende Dinge total unklar: warum kann man beim Anlegen eines neuen SDI-Projektes mit DB-Unterstützung bei der Auswahl der ODBC-Quelle die MySQL-Datenbank im Treiber nicht auswählen (Meldungsfenster: Loading database list not implemented for SQLDriverConnect())? Teilweise stürzt sogar die IDE ab? Im ODBC-Admin hab ich aber einen connection::success und sehe auch die tables.<br />
Nimmt man dann bei der Auswahl im Assistenten statt ODBC OLE DB und dann noch einen &quot;Microsoft OLE DB Provider for ODBC Drivers&quot; dann kommt auch das Fenster, wo man die Tabellen als Datengrundlage auswählen kann. Aber warum ist das so?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1155437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1155437</guid><dc:creator><![CDATA[AndyDD]]></dc:creator><pubDate>Mon, 16 Oct 2006 07:46:58 GMT</pubDate></item><item><title><![CDATA[Reply to ODBC und MFC (Datenbank ansprechen) on Mon, 16 Oct 2006 10:38:39 GMT]]></title><description><![CDATA[<p>Kann das eventuell auch am Microsoft Visual Studio <a href="http://2003.net" rel="nofollow">2003.net</a> liegen? Ich habe eben das alles mit meiner alten VS 6.0 Autorenedition probiert und da läuft das ganze ohne Probleme. Ist da irgendwem was bekannt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1155587</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1155587</guid><dc:creator><![CDATA[AndyDD]]></dc:creator><pubDate>Mon, 16 Oct 2006 10:38:39 GMT</pubDate></item></channel></rss>