15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


ODBC / WINDOWS NT problem!

Kavita Chinta -- kavita@headcheese.daa.uc.EDU
Friday, January 03, 1997


Environment: Windows NT 4.0, VC++ 4.2-flat

Hello,
I am having a problem with an ODBC application on WINDOWS NT.
My application has a CDatabase object in my main application class.
In my view class I have a message handler which will get a pointer
to my application class. I then open the CDatabase object by passing
"NULL" as the parameter as I want the user to select the
data source. Now my problem is my application works fine for
the first time and then say after three or four times it crashes.
This problem does not happen on WINDOWS 95. I ran the same
application on a WIN 95 machine and it worked fine. Does ODBC
work differently for WIN NT?? Did anyone have a similar problem?
The code in my message handler is as shown below:


void CTestDBView::OnViewTest()
{
        // TODO: Add your command handler code here
        CTestDBApp* papp = (CTestDBApp*) AfxGetApp();
        if (papp->m_db.IsOpen() )
                papp->m_db.Close();

                if (!papp->m_db.OpenEx(NULL) )
                        MessageBox("Error");
                else
                {
                        CString p;
                        p = papp->m_db.GetConnect();
                        p = p.Right(p.GetLength() - (p.Find(_T("DSN")) + 4));
                        p = p.Left(p.Find(_T(";")));
                        AfxMessageBox(p);
                }



}

Anyhelp regarding this is appreciated. Thanks in advance,

Kavita Chinta
Software Synergy Inc.
Cincinnati,
OH - 45241
                                




Dan Kirby -- dkirby@accessone.com
Saturday, January 04, 1997

Hi,
You don't have very much information in your message so I can only take a
wild guess.  As I look into my crystal ball, I see that you most likely
need the newer Jet DLL component which is talked about in article Q151186. 
To get to the Microsoft Developer Knowledgebase go to
http://www.microsoft.com/kb. This takes care of a crashing problem when
shutting down connections and it most often occurs on NT 4.0.

You message doesn't talk about when the crash occurs or what you mean by
crash (access violation, exception, assertion, etc.).

--dan


----------
> From: Kavita Chinta 
> To: mfc-l@netcom.com
> Subject: ODBC / WINDOWS NT problem!
> Date: Friday, January 03, 1997 12:55 PM
> 
> 
> Environment: Windows NT 4.0, VC++ 4.2-flat
> 
> Hello,
> I am having a problem with an ODBC application on WINDOWS NT.
> My application has a CDatabase object in my main application class.
> In my view class I have a message handler which will get a pointer
> to my application class. I then open the CDatabase object by passing
> "NULL" as the parameter as I want the user to select the
> data source. Now my problem is my application works fine for
> the first time and then say after three or four times it crashes.
> This problem does not happen on WINDOWS 95. I ran the same
> application on a WIN 95 machine and it worked fine. Does ODBC
> work differently for WIN NT?? Did anyone have a similar problem?
> The code in my message handler is as shown below:
> 
> 
> void CTestDBView::OnViewTest()
> {
>         // TODO: Add your command handler code here
>         CTestDBApp* papp = (CTestDBApp*) AfxGetApp();
>         if (papp->m_db.IsOpen() )
>                 papp->m_db.Close();
> 
>                 if (!papp->m_db.OpenEx(NULL) )
>                         MessageBox("Error");
>                 else
>                 {
>                         CString p;
>                         p = papp->m_db.GetConnect();
>                         p = p.Right(p.GetLength() - (p.Find(_T("DSN")) +
4));
>                         p = p.Left(p.Find(_T(";")));
>                         AfxMessageBox(p);
>                 }
> 
> 
> 
> }
> 
> Anyhelp regarding this is appreciated. Thanks in advance,
> 
> Kavita Chinta
> Software Synergy Inc.
> Cincinnati,
> OH - 45241
>                                 
> 



Christopher -- ckrahe@gshs.com
Monday, January 06, 1997

Kavita-

Environment: Windows NT 3.51, VC++ 4.2-Enterprise

We haven't seen a difference ODBC-wise between NT & 95.  We pass a 
non-null string to Open with empty parameter values, eg: "ODBC;DSN=", 
which for us gives the results you are looking for (the user is prompted 
to select a datasource).  We haven't tried passing NULL like the 
documentation says you can.  Note that we're using Open instead of 
OpenEx, though I am not sure whether that makes a difference.

BTW, does anyone know why the MFC documentation reads "Calling the OpenEx 
member function is the preferred way to connect to a data source and 
initialize your database object." ?  Not suprisingly, it doesn't explain 
why.

-Chris Krahe
 Columbia, MD

--------------------------
Environment: Windows NT 4.0, VC++ 4.2-flat

Hello,
I am having a problem with an ODBC application on WINDOWS NT.
My application has a CDatabase object in my main application class.
In my view class I have a message handler which will get a pointer
to my application class. I then open the CDatabase object by passing
"NULL" as the parameter as I want the user to select the
data source. Now my problem is my application works fine for
the first time and then say after three or four times it crashes.
This problem does not happen on WINDOWS 95. I ran the same
application on a WIN 95 machine and it worked fine. Does ODBC
work differently for WIN NT?? Did anyone have a similar problem?
The code in my message handler is as shown below:


void CTestDBView::OnViewTest()
{
        // TODO: Add your command handler code here
        CTestDBApp* papp = (CTestDBApp*) AfxGetApp();
        if (papp->m_db.IsOpen() )
                papp->m_db.Close();

                if (!papp->m_db.OpenEx(NULL) )
                        MessageBox("Error");
                else
                {
                        CString p;
                        p = papp->m_db.GetConnect();
                        p = p.Right(p.GetLength() - (p.Find(_T("DSN")) + 
4));
                        p = p.Left(p.Find(_T(";")));
                        AfxMessageBox(p);
                }



}

Anyhelp regarding this is appreciated. Thanks in advance,

Kavita Chinta
Software Synergy Inc.
Cincinnati,
OH - 45241




Dan Kirby -- dkirby@accessone.com
Monday, January 06, 1997

Hi you wrote:

> BTW, does anyone know why the MFC documentation reads "Calling the OpenEx

> member function is the preferred way to connect to a data source and 
> initialize your database object." ?  Not suprisingly, it doesn't explain 
> why.

Basically it is like any of the xxxxxEx functions in Windows. It is the API
that you know will be supported in the future.  It also provides more
functionality. For example, the OpenEx function allows you to suppress the
ODBC login dialog and does not load the cursor library by default like the
Open() function does.  So as it says, OpenEx is the preferred way to open a
CDatabase object because it is more flexible like most xxxxxEx functions.

--dan



----------
> From: Krahe, Christopher 
> To: mfc-l@netcom.com
> Subject: Re: ODBC / WINDOWS NT problem!
> Date: Monday, January 06, 1997 5:21 AM
> 
> Kavita-
> 
> Environment: Windows NT 3.51, VC++ 4.2-Enterprise
> 
> We haven't seen a difference ODBC-wise between NT & 95.  We pass a 
> non-null string to Open with empty parameter values, eg: "ODBC;DSN=", 
> which for us gives the results you are looking for (the user is prompted 
> to select a datasource).  We haven't tried passing NULL like the 
> documentation says you can.  Note that we're using Open instead of 
> OpenEx, though I am not sure whether that makes a difference.
> 
> BTW, does anyone know why the MFC documentation reads "Calling the OpenEx

> member function is the preferred way to connect to a data source and 
> initialize your database object." ?  Not suprisingly, it doesn't explain 
> why.
> 
> -Chris Krahe
>  Columbia, MD
> 
> --------------------------
> Environment: Windows NT 4.0, VC++ 4.2-flat
> 
> Hello,
> I am having a problem with an ODBC application on WINDOWS NT.
> My application has a CDatabase object in my main application class.
> In my view class I have a message handler which will get a pointer
> to my application class. I then open the CDatabase object by passing
> "NULL" as the parameter as I want the user to select the
> data source. Now my problem is my application works fine for
> the first time and then say after three or four times it crashes.
> This problem does not happen on WINDOWS 95. I ran the same
> application on a WIN 95 machine and it worked fine. Does ODBC
> work differently for WIN NT?? Did anyone have a similar problem?
> The code in my message handler is as shown below:
> 
> 
> void CTestDBView::OnViewTest()
> {
>         // TODO: Add your command handler code here
>         CTestDBApp* papp = (CTestDBApp*) AfxGetApp();
>         if (papp->m_db.IsOpen() )
>                 papp->m_db.Close();
> 
>                 if (!papp->m_db.OpenEx(NULL) )
>                         MessageBox("Error");
>                 else
>                 {
>                         CString p;
>                         p = papp->m_db.GetConnect();
>                         p = p.Right(p.GetLength() - (p.Find(_T("DSN")) + 
> 4));
>                         p = p.Left(p.Find(_T(";")));
>                         AfxMessageBox(p);
>                 }
> 
> 
> 
> }
> 
> Anyhelp regarding this is appreciated. Thanks in advance,
> 
> Kavita Chinta
> Software Synergy Inc.
> Cincinnati,
> OH - 45241
> 




| Вернуться в корень Архива |