Verbindung zu SQL-Server wird nicht beendet!

02/12/2008 - 10:19 von Lutz Uhlmann | Report spam
Hallo NG!

Hoffe ich bin hier richtig mit dem speziellen Thema!

Ich öffne in einer VC++ - Anwendung eine SQL-Server-Datenbank per MFC/DAO.
Die Verbindung wird auch erfolgreich hergestellt. Nach dem Schliessen von
Datenbank und Workspace sowie dem Löschen beider Objekte bleibt meine
Verbindung zum Server aber bis zum Schliessen des Programmes bestehen! Kennt
jemand dieses Problem? Ist das ein SQL-Server-Problem oder eher eines von
MFC?

void CProgrammDlg::OnBtTest()
{
CDaoWorkspace* pWS = NULL;
CDaoDatabase* pDB = NULL;
CString sConnect;

try
{
pWS = new CDaoWorkspace();
pWS->Open();

sConnect.Format(_T("ODBC;DRIVER=SQL
Server;SERVER=%s;DATABASE=%s;Trusted_Connection=Yes;"),
sServer,
sDatabase);

pDB = new CDaoDatabase(pWS);
pDB->Open(NULL, FALSE, FALSE, sConnect);
if (pDB->IsOpen())
{
AfxMessageBox(_T("Verbindung erfolgreich hergestellt!"), MB_OK +
MB_ICONINFORMATION);
}
else
{
AfxMessageBox(_T("Verbindung fehgeschlagen!"), MB_OK + MB_ICONERROR);
}
}
catch(CDaoException* e)
{
CString strMessText;
strMessText.Format(_T("Ausnahme-Fehler beim Öffnen der Datenbank
!Datenbank %s kann nicht geöffnet werden !%s (%s, %ld)"),
sDatabase,
e->m_pErrorInfo->m_strDescription,
e->m_pErrorInfo->m_strSource,
e->m_pErrorInfo->m_lErrorCode);
AfxMessageBox(strMessText, MB_OK|MB_APPLMODAL|MB_ICONERROR, 0);
}

if (pDB)
{
if (pDB->IsOpen())
pDB->Close();
_SAFEDELETE(pDB);
}

if (pWS)
{
if (pWS->IsOpen())
pWS->Close();
_SAFEDELETE(pWS);
}
// !!!!!!!!!!!!!!!!!! Die Verbindung besteht immer noch !!!!!!!!!
}
 

Lesen sie die antworten

#1 Stefan Hoffmann
02/12/2008 - 11:22 | Warnen spam
hallo Lutz,

Lutz Uhlmann schrieb:
Hoffe ich bin hier richtig mit dem speziellen Thema!


hmm...

if (pDB)
{
if (pDB->IsOpen())
pDB->Close();
_SAFEDELETE(pDB);
}


Was macht dein _SAFEDELETE()-Makro und was sagt ein

if (pDB)
{AfxMessageBox(_T("komich"), MB_OK|MB_APPLMODAL|MB_ICONERROR, 0);}

danach?


mfG

Ähnliche fragen