How to obtain underlying provider errors by using ADO.NET in Visual C++ .NET

Article translations Article translations
Article ID: 308651 - View products that this article applies to.
This article was previously published under Q308651
For a Microsoft Visual Basic .NET version of this article, see 308043.
For a Microsoft Visual C# .NET version of this article, see 308650.

This article refers to the System::Data::OleDb namespace in the Microsoft .NET Framework Class Library.
Expand all | Collapse all

On This Page

SUMMARY

Managed providers can raise several exceptions. To obtain more detailed information about the cause, you need access to provider-specific error information. This article shows how to gather this information.

Requirements

The following list outlines the recommended hardware, software, network infrastructure, and service packs that are required:
  • Microsoft .NET Framework
  • Microsoft Visual C++ .NET
This article assumes that you are familiar with the following topics:
  • Exceptions and error handling
  • Microsoft OLE DB

Technique description

You must wrap your code in a "try... catch" block to catch the exception and process the error collection from the OLEDBException.

Create project and add code

  1. Create a new Managed C++ application. Name the project ProviderError.
  2. Open the ProviderError.CPP file. Copy the following code and paste it in to replace the default code built in by Microsoft Visual Studio .NET:
    
    #include "stdafx.h"
    #using <mscorlib.dll>
    #using <System.dll>
    #using <System.Data.dll>
    
    using namespace System;
    using namespace System::Data::OleDb;
    
    // This is the entry point for this application
    #ifdef _UNICODE
    int wmain(void)
    #else
    int main(void)
    #endif
    {
            OleDbConnection *myCn = new OleDbConnection("Provider=SQLOLEDB.1;Data Source=MyWrongServerName");
            try
    	{
                myCn->Open();
    	}
            catch(OleDbException *ex)
    	{
                Int32 i;
                for (i = 0; i <= ex->Errors->Count - 1; i++)
    	   {
    				Console::WriteLine("Index # {0} \n Message: {1} \n Native: {2}" 
    					"\n Source: {3} \n SQL: {4} \n", i.ToString(), ex->Errors->Item[i]->Message, 
    					ex->Errors->Item[i]->NativeError.ToString(), ex->Errors->Item[i]->Source, 
    					ex->Errors->Item[i]->SQLState);
    	   }
    	}
    
    	return 0;
    }
  3. On the Debug menu, click Run without Debugging to run the application. A console window that contains the provider error should appear after about 10 to 15 seconds.

Troubleshooting

If you have a server called "MyWrongServerName", you may not get an error message.

Properties

Article ID: 308651 - Last Review: August 31, 2005 - Revision: 4.1
APPLIES TO
  • Microsoft ADO.NET 1.1
  • Microsoft ADO.NET 1.0
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C++ .NET 2002 Standard Edition
Keywords: 
kbhowtomaster kbsystemdata KB308651

Give Feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com