Solved

Help me. I am a C++ beginer. I meet some proplems

Posted on 2002-03-28
7
311 Views
Last Modified: 2012-06-27
The code sesion as below:
//====================
#include "stdafx.h"
#import "D:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
inline void TESTHR(HRESULT x){if FAILED(x) _com_issue_error(x);};


int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
      // TODO: Place code here.
     _bstr_t SqlStr;
     _bstr_t CnnStr;
     _bstr_t BookList;
     _ConnectionPtr AdoCnn=NULL;
        TESTHR(AdoCnn.CreateInstance(__uuidof(Connection15),NULL)); // Error in this line
     _RecordsetPtr AdoRcs=NULL;
     TESTHR(AdoRcs.CreateInstance(__uuidof(Recordset))); // And this line too
     CnnStr="driver={SQL Server};server=apphan04;uid=sa;pwd=;database=WebDemo";
     AdoCnn->ConnectionString=CnnStr;
     AdoCnn->ConnectionTimeout=30;
     AdoCnn->Open;
     SqlStr="SELECT * FROM Books";
     AdoRcs=AdoCnn->Execute(SqlStr,0,0);
     BookList="";
     if(!((AdoRcs->BOF)&&(AdoRcs->adoEOF)))
     {
               BookList=AdoRcs->Fields->GetItem("Title")->Value;
     }
     AdoRcs->Close();
     AdoCnn->Close();

     return 0;
}

//=====  END OF CODE ==========
Builing is OK but error while execute program...
Debug Error
Program E:\Projects\AdoTest.exe
abnormal program termination
(Press Rety to debug the application).

After Retry another message
The exception breakpoint
The breakepoint has been reached.
(0x80000003) occurred in the application at location 0x004089e3.
Click on OK to terminate the program
Click on Cancel to debug the program

I don't what happen, pls the me how to solve this proplem.
Thank
0
Comment
Question by:tujvd
7 Comments
 
LVL 86

Expert Comment

by:jkr
ID: 6902349
>>Press Rety to debug the application

Why don't you press 'Retry'? It'll take you straight to the source line where the problem is...

0
 

Expert Comment

by:0xDEADBEEF
ID: 6902582
_ConnectionPtr AdoCnn=NULL;
TESTHR(AdoCnn.CreateInstance(__uuidof(Connection15),NULL));
_RecordsetPtr AdoRcs=NULL;
TESTHR(AdoRcs.CreateInstance(__uuidof(Recordset))); // And this line too

This is your problem. AdoCnn not set to an instance of _ConnectionPtr, so the AdoCnn.CreateInstance call references a method of an object that isn't even there. You need to instanciate the objects, so they don't point to NULL. Try this instead:

_ConnectionPtr AdoCnn();
TESTHR(AdoCnn.CreateInstance(__uuidof(Connection15),NULL));
_RecordsetPtr AdoRcs();
TESTHR(AdoRcs.CreateInstance(__uuidof(Recordset))); // And this line too

Don't be alarmed if this doesn't work, I'm not very familiar with the Windows API. The point is, you try to call a method of an object that doesn't exist. The compiler doesn't get that, but at runtime, this will trigger an error.
Anyway, as a beginner to C++, I wouldn't start doing ADO database calls. This is a little too tough, you may want to gather some experience before doing this sort of stuff.

I hope this helps.
0
 

Author Comment

by:tujvd
ID: 6904453
I've found the ans for this proplem. Now it's OK after I add a ::CoInitilize(NULL).
0
Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

 

Author Comment

by:tujvd
ID: 6904468
You know
I use the way that import msado15.dll into my projects. Are there any way to use ADO in a C++ program? Which you offen use?

I'm writing a COM+ component. Following the instruction in a book, I include comsvsc.h file - that file doesn't exists in my PC - and I can find after install Platform SDK...
My PC with W2K Advance SP2, are the any way to write a COM+ component without install new Platform SDK ?
Thank.
0
 

Expert Comment

by:amigoce
ID: 6922681
This is the source code in my early project,in data connectiong you must ensure the instance of the connection
is created succeeded .
try
     {
          hr=m_pConnection.CreateInstance(__uuidof(Connection));
          if(SUCCEEDED(hr))
          {
               hr=m_pConnection->Open(
                    bstr_t(L"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=db.mdb;"),
                    _bstr_t(L""),
                    _bstr_t(L""),
                    adModeUnknown);
               if(SUCCEEDED(hr))
               {
                    m_IsConnectionOpen=TRUE;
               }
          }
     }
     catch(_com_error &e)
     {
          _bstr_t bstrSource(e.Source());
          _bstr_t bstrDescription(e.Description());
          TRACE("Exception thrown for classes generated by #import");
          TRACE("\tCode=%08lx\n",e.Error());
          TRACE("\tCode meaning= %s \n",e.ErrorMessage());
          TRACE("\tSource= %s \n",(LPCTSTR)bstrSource);
          TRACE("\tDescription= %s \n",(LPCTSTR)bstrDescription);
     }
     catch(...)
     {
          TRACE("***Unhandled Exception***");
     }

0
 
LVL 11

Expert Comment

by:griessh
ID: 6956263
Dear tujvd

I think you forgot this question. I will ask Community Support to close it unless you finalize it within 7 days. You can always request to keep this question open. But remember, experts can only help you if you provide feedback to their questions.
Unless there is objection or further activity,  I will suggest to

     "refund the points and PAQ at zero points"

since you found you rown solution.

PLEASE DO NOT ACCEPT THIS COMMENT AS AN ANSWER!
======
Werner
0
 
LVL 6

Accepted Solution

by:
Mindphaser earned 0 total points
ID: 6979172
Moved to PAQ and points refunded.

** Mindphaser - Community Support Moderator **
0

Featured Post

Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

  Included as part of the C++ Standard Template Library (STL) is a collection of generic containers. Each of these containers serves a different purpose and has different pros and cons. It is often difficult to decide which container to use and …
Basic understanding on "OO- Object Orientation" is needed for designing a logical solution to solve a problem. Basic OOAD is a prerequisite for a coder to ensure that they follow the basic design of OO. This would help developers to understand the b…
The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor an…
The viewer will be introduced to the member functions push_back and pop_back of the vector class. The video will teach the difference between the two as well as how to use each one along with its functionality.

816 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now