<?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[Datenbankzugriff korrekt beenden]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe ein Problem mit einem Datenbankzugriff innerhalb einer Komponente (dll).</p>
<p>Ich öffne innerhalb einer Komponente einen Datenbankzugriff schließe diesen dann in der Komponente wieder. Wenn die Komponente nun beendet wird und daraufhin das Programm geschlossen, welches die Komponente gestartet hat, erhalte ich drei aufeinanderfolgende Fehlermeldungen. Und zwar dass die Anwendung aufgrund eines ungültigen Vorgangs geschlossen wird.</p>
<p>Wenn ich den Datenbankzugriff nicht ansteuern lasse in der Komponente, kann das Programm ganz normal beendet werden und es erscheinen keine Fehlermeldungen.</p>
<p>Bei dem Zugriff wird die Datenbank ganz normal geöffnet und geschlossen (bei einem vergleichbaren Programm habe ich einen vergleichbaren Code verwendet und dort funktionierte es) Doch irgendwie scheint die Datenbank ja nicht ganz richtig geschlossen worden zu sein.</p>
<p>Wer kann helfen? Bin für jede Vorschläge offen!</p>
<p>mfg<br />
N.Rico</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/81063/datenbankzugriff-korrekt-beenden</link><generator>RSS for Node</generator><lastBuildDate>Sun, 19 Apr 2026 09:19:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/81063.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 27 Jul 2004 14:52:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Datenbankzugriff korrekt beenden on Tue, 27 Jul 2004 14:52:57 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe ein Problem mit einem Datenbankzugriff innerhalb einer Komponente (dll).</p>
<p>Ich öffne innerhalb einer Komponente einen Datenbankzugriff schließe diesen dann in der Komponente wieder. Wenn die Komponente nun beendet wird und daraufhin das Programm geschlossen, welches die Komponente gestartet hat, erhalte ich drei aufeinanderfolgende Fehlermeldungen. Und zwar dass die Anwendung aufgrund eines ungültigen Vorgangs geschlossen wird.</p>
<p>Wenn ich den Datenbankzugriff nicht ansteuern lasse in der Komponente, kann das Programm ganz normal beendet werden und es erscheinen keine Fehlermeldungen.</p>
<p>Bei dem Zugriff wird die Datenbank ganz normal geöffnet und geschlossen (bei einem vergleichbaren Programm habe ich einen vergleichbaren Code verwendet und dort funktionierte es) Doch irgendwie scheint die Datenbank ja nicht ganz richtig geschlossen worden zu sein.</p>
<p>Wer kann helfen? Bin für jede Vorschläge offen!</p>
<p>mfg<br />
N.Rico</p>
]]></description><link>https://www.c-plusplus.net/forum/post/569604</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/569604</guid><dc:creator><![CDATA[N.Rico]]></dc:creator><pubDate>Tue, 27 Jul 2004 14:52:57 GMT</pubDate></item><item><title><![CDATA[Reply to Datenbankzugriff korrekt beenden on Tue, 27 Jul 2004 21:16:36 GMT]]></title><description><![CDATA[<p>Welche Datenbank. Code ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/569897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/569897</guid><dc:creator><![CDATA[Unix-Tom]]></dc:creator><pubDate>Tue, 27 Jul 2004 21:16:36 GMT</pubDate></item><item><title><![CDATA[Reply to Datenbankzugriff korrekt beenden on Wed, 28 Jul 2004 11:35:37 GMT]]></title><description><![CDATA[<p>Hallo nochmal!</p>
<p>Es ist eine COM-Komponente, die ich mit dem MFC-Anwendungassisten erstellt habe.</p>
<p>Der Datenbankzugriff erfolgt in einem eigenen Dialog in dieser Komponente. Wenn ich den Datenbankzugriff nicht aufrufen lasse, dann kann ich die Komponente ganz normal schließen und das Programm, welche diese aufgerufen hat, auch.<br />
Sobald der Datenbankzugriff erfolgt, kann ich das Programm nicht sauber beenden, es folgen drei Fehlermeldungen:<br />
Das Programm verursachte einen Fehler durch eine ungültige Seite in Modul KERNEL32.DLL bei 0167:bff7b9a6.<br />
Sobald ich jedoch die drei Close-Befehle nicht aufrufe, erscheint nur eine einzige dieser Fehlermeldungen.</p>
<p>Also, dies ist der Code, mit dem ich den Datenbankzugriff durchführe.</p>
<p>// Die Struktur nimmt die einzelnen Datenbankfelder auf<br />
struct MYBIND<br />
{<br />
MYBIND()<br />
{<br />
memset(this, 0, sizeof(*this));<br />
}</p>
<p>TCHAR szValue[250];<br />
DWORD dwStatus;<br />
};</p>
<p>// Die Initialisierungen für den Datenbankzugriff<br />
DBCOLUMNINFO* pColumnInfo = NULL;<br />
struct MYBIND* riskBind;<br />
CCommand&lt;CManualAccessor&gt; risk;<br />
CSession risk_session;<br />
CDataSource riskdatenbank;<br />
CString sqlstat;</p>
<p>//--------------------------------------------------------------------------------<br />
// hier wird der Datenbankzugriff &quot;hochgefahren&quot;</p>
<p>CString pfad2;<br />
char buf2[1024];<br />
::GetCurrentDirectory(255, buf2);<br />
pfad2 = buf2;</p>
<p>CString source = &quot;DSN=Visual FoxPro Tables;UID=;PWD=;SourceDB=&quot;;<br />
source += pfad2;<br />
source += &quot;;SourceType=DBF;Exclusive=Nein;BackgroundFetch=Ja;Collate=Machine;&quot;;</p>
<p>CDBPropSet dbinit(DBPROPSET_DBINIT);<br />
CDBPropSet propset(DBPROPSET_ROWSET);</p>
<p>dbinit.AddProperty(DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO, false);<br />
dbinit.AddProperty(DBPROP_INIT_PROMPT, (short)4);<br />
dbinit.AddProperty(DBPROP_INIT_PROVIDERSTRING, source);<br />
dbinit.AddProperty(DBPROP_INIT_LCID, (long)1031);</p>
<p>riskdatenbank.OpenWithServiceComponents(&quot;MSDASQL.1&quot;, &amp;dbinit);</p>
<p>risk_session.Open(riskdatenbank);</p>
<p>propset.AddProperty(DBPROP_IRowsetChange, true);<br />
propset.AddProperty(DBPROP_UPDATABILITY,<br />
DBPROPVAL_UP_INSERT | DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_DELETE);</p>
<p>//--------------------------------------------------------------------------------</p>
<p>sqlstat = &quot;SELECT * FROM ik_risik&quot;</p>
<p>//--------------------------------------------------------------------------------<br />
// hier der eigentliche Datenbankzugriff</p>
<p>if (risk.Open(risk_session, sqlstat, &amp;propset, NULL, DBGUID_DBSQL, FALSE) != S_OK)<br />
{<br />
MessageBox(&quot;Datensatz konnte nicht geladen werden.&quot;, &quot;Warnung&quot;, MB_OK);<br />
}<br />
else<br />
{<br />
}</p>
<p>//--------------------------------------------------------------------------------<br />
// hier nur noch die Übergabe (an diesem liegt es nicht, da ich die schon<br />
// weggelassen habe, der Fehler blieb derselbe</p>
<p>if (risk.m_spRowset != NULL)<br />
{<br />
ULONG ulColumns = 0;<br />
DBCOLUMNINFO* pColumnInfo = NULL;<br />
LPOLESTR pStrings = NULL;</p>
<p>risk.GetColumnInfo(&amp;ulColumns, &amp;pColumnInfo, &amp;pStrings);</p>
<p>riskBind = new MYBIND[ulColumns];</p>
<p>risk.CreateAccessor(ulColumns, &amp;riskBind[0],<br />
sizeof(MYBIND)*ulColumns);</p>
<p>for (ULONG l=0; l&lt;ulColumns;l++)<br />
risk.AddBindEntry(l+1, DBTYPE_STR, sizeof(TCHAR)*200, \<br />
&amp;riskBind[l].szValue, NULL, &amp;riskBind[l].dwStatus);</p>
<p>risk.Bind();</p>
<p>int nItem = 0;<br />
ULONG ulFields = risk.GetColumnCount();</p>
<p>risk.MoveFirst();<br />
}</p>
<p>//--------------------------------------------------------------------------------<br />
// hier wird die Datenbank wieder geschlossen</p>
<p>risk.Close();<br />
riskdatenbank.Close();<br />
risk_session.Close();<br />
//--------------------------------------------------------------------------------</p>
<p>mfg N.Rico</p>
]]></description><link>https://www.c-plusplus.net/forum/post/570277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/570277</guid><dc:creator><![CDATA[N.Rico]]></dc:creator><pubDate>Wed, 28 Jul 2004 11:35:37 GMT</pubDate></item><item><title><![CDATA[Reply to Datenbankzugriff korrekt beenden on Thu, 29 Jul 2004 12:12:25 GMT]]></title><description><![CDATA[<p>...vielleicht ist es ein Problem der COM-Komponente selbst. Habe durch einfügen von Messaheboxes gesehen, dass die Fehlermeldungen unmittelbar erscheinen, sobald die Komponente nach Beenden des Clients die Funktion DllCanUnloadNow() aufruft.</p>
<p>Wenn ich den Datenbankzugriff nicht schließe, bevor ich die Komponente schließe, erscheint die Fehlermeldung nur ein einziges statt dreimal!</p>
<p>Weiß irgendjemand Rat und könnte helfen?</p>
<p>mfg N.Rico</p>
]]></description><link>https://www.c-plusplus.net/forum/post/570936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/570936</guid><dc:creator><![CDATA[N.Rico]]></dc:creator><pubDate>Thu, 29 Jul 2004 12:12:25 GMT</pubDate></item></channel></rss>