|
What is the value of 'res' when this line is executed, you'll need to strp through the code in your debugger.
res=mysql_store_result(myDB);
|
|
|
|
|
sir after debugging :
myDB shows this value 0x00ba4008
and res shows this 0x00000000
thanks.
hi
|
|
|
|
|
I suspect the call is failing, have you tried adding mysql_error() to see if you get an error.
Also, change this part of the code:
if(mysql_query(myDB,"select * from login"))
{
res=mysql_store_result(myDB);
row = mysql_fetch_row(res);
MessageBox(row[0]);
}
to this:
<pre
if(mysql_query(mydb,"select *="" from="" login"))
{
="" res="mysql_store_result(myDB);
" if(res)
="" {
="" row="mysql_fetch_row(res);
" if(row="" !="FALSE)
" messagebox(row[0]);
="" }
}<="" pre="">
|
|
|
|
|
yes sir i think u r right call is failing
becauze when debugger comes on if(res) it will show login window again
and this will stop debugger
but i dont know sir why this if(mysql_query(myDB,"select * from login"))
is not fetching result
[sir i use mysql 6.0 and VC++ 6.0(is there any problem Sir)]
hi
|
|
|
|
|
Are there any records in the database table ?
|
|
|
|
|
yes sir
i have database gourav , a table login and
this table has three fields user , password and id
and there are three records in this table
hi
|
|
|
|
|
What is the return value from the mysql_query(myDB,"select * from login")) function ?
Change it to this for a test:
int i = mysql_query(myDB,"select * from login");
What is the value of i ?
|
|
|
|
|
sir return value for
int i = mysql_query(myDB,"select * from login");
and i shows value 1 when use debugger
hi
|
|
|
|
|
Add the try/catch block that Shouvik suggested, it should help diagnose the problem.
|
|
|
|
|
thanks a lot sir
u have devoted a lot of time for me
thanks a lot
hi
|
|
|
|
|
No problem, just trying to help a fellow coder.
|
|
|
|
|
Surround the code for retrieving with a try and catch. then get the error reason by catching the Exception object throught the method what();
I think Jonathan is right. The recordset value is NULL and hence throws an Acess Violation Error
There are only two kinds of people who are really fascinating-people who know absolutely everything, and people who know absolutely nothing.
Oscar Wilde (1854-1900)
Regards...
Shouvik
|
|
|
|
|
sir thnaks
but i dont know about the what(); function
so can u help me sir
thanks
hi
|
|
|
|
|
Actually I'm not well versed with ODBC section in VC 6.0 So I m just givin u a generalized concept.
Whenever you surround any code with try catch you throw an exception which is the Object of CException Class.
try
{
}
catch(CException e)
{
MessageBox(e.what());
}
So this way you can atleast trace what error are u getting.
There are only two kinds of people who are really fascinating-people who know absolutely everything, and people who know absolutely nothing.
Oscar Wilde (1854-1900)
Regards...
Shouvik
|
|
|
|
|
sir what() is not working with this
it will give error
'what' : is not a member of 'CException'
please sir solve this
thanks
hi
|
|
|
|
|
Change the code to this:
int i;
MYSQL *myDB = NULL;
MYSQL_RES *res = NULL;
MYSQL_ROW row;
CString user,pass,aqp;
try
{
if((myDB = mysql_init((MYSQL*) 0)) &&
mysql_real_connect(myDB,"localhost","root",NULL,NULL,3306,NULL,NULL))
{
if(mysql_select_db( myDB,"gourav"))
{
GetDlgItemText(IDC_USER,user);
GetDlgItemText(IDC_PASS,pass);
if(mysql_query(myDB,"select * from login"))
{
res=mysql_store_result(myDB);
if(res)
{
row = mysql_fetch_row(res);
if(row != FALSE)
MessageBox(row[0]);
}
}
}
else
MessageBox("Can't connect !\nPlease try later.") ;
mysql_close(myDB);
}
catch(CException& e)
{
MessageBox(e.what());
}
do you get a messagebox with a description of the error in it ?
|
|
|
|
|
no messagebox sir
because what() is not working with this
it will give error
'what' : is not a member of 'CException'
thanks
hi
|
|
|
|
|
Change what() to ReportError()
|
|
|
|
|
hi try this
catch(CException& e)
{
MessageBox(e.ReportError());
}
but gives this error
'MessageBoxA' : cannot convert parameter 1 from 'int' to 'const char *'
hi
|
|
|
|
|
you will find in my previous post how to get the error into the char err[255].
now pass this as
MessageBox(err);
I hope this works for you fine now
There are only two kinds of people who are really fascinating-people who know absolutely everything, and people who know absolutely nothing.
Oscar Wilde (1854-1900)
Regards...
Shouvik
|
|
|
|
|
virtual BOOL GetErrorMessage(LPTSTR lpszError,UINT nMaxError,PUINT pnHelpContext = NULL);
Sorry if it is not working. use the above function...the lpszError will containt the error message.
you can have the a
char err[255];
exp_obj.GetErrorMessage(err,255);
hope u get my point
There are only two kinds of people who are really fascinating-people who know absolutely everything, and people who know absolutely nothing.
Oscar Wilde (1854-1900)
Regards...
Shouvik
|
|
|
|
|
I got assertion error when im starting the application. it show me the error at Application class(GUSapp.cpp)
CMainFrame* pMainFrame = new CMainFrame;
if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
Whe i debug it,particularly the error occurs at the line
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
At this line assertion error occurs and it debug library shows File:Winmdi.cpp,Line:139.
Why this error occur? My applcation is MDI application and im working in MFC.
Anu
|
|
|
|
|
The short answer is: because your menu doesnt have enough items in it.
CMDIFrameWnd::OnCreate() attempts to guess which sub-menu is the Window menu. It does this based on the assumption that you have followed the Windows user interface guidelines and have a Help menu as the right-most item and a Window menu immediately to the left of that. The assertion you are getting is specifically because the menu you have made for IDR_MAINFRAME has less than 2 items.
|
|
|
|
|
OK. But i need only one menu for my application and specially i dont want help menu and file,view etc.,
I added a one new menu in IDR_MAINFRAME as Operator Station,thats all. This is enough for me.
IS there anyway to overcome this error?
Anu
|
|
|
|
|
I think before anything else you should read and understand all the functionality of CMDIFrameWnd Class[^] and perhaps review the Win32 MDI documentation[^]
Then you might replace your OnCreateClient with this
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) <br />
{<br />
CMenu* pMenu = NULL;<br />
if (m_hMenuDefault == NULL)<br />
{<br />
pMenu = GetMenu();<br />
ASSERT(pMenu != NULL);<br />
pMenu = pMenu->GetSubMenu(0);<br />
ASSERT(pMenu != NULL);<br />
}<br />
<br />
return CreateClient(lpcs, pMenu);<br />
}
That will append the window list to your single Operator Station menu, you might also need to override other member functions of CMDIFrameWnd such as GetWindowMenuPopup which expects to find a standard window menu.
Alternately you could add a standard Window menu after Operator Station and replace your OnCreateClient with this
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) <br />
{<br />
CMenu* pMenu = NULL;<br />
if (m_hMenuDefault == NULL)<br />
{<br />
pMenu = GetMenu();<br />
ASSERT(pMenu != NULL);<br />
pMenu = pMenu->GetSubMenu(1);<br />
ASSERT(pMenu != NULL);<br />
}<br />
<br />
return CreateClient(lpcs, pMenu);<br />
}
this is the way I would do it, if I really had to leave out the help menu, as it reduces the number of member functions that you might have to override.
Personally I would include the standard Window menu and a simple Help menu with just an about box.
|
|
|
|