How to obtain underlying provider errors by using ADO.NET in Visual C++ .NET (308651)
The information in this article applies to:
- Microsoft ADO.NET (included with the .NET Framework 1.1)
- Microsoft ADO.NET (included with the .NET Framework) 1.0
- Microsoft Visual C++ .NET (2003)
- Microsoft Visual C++ .NET (2002)
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. 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- Create a new Managed C++ application. Name the project
ProviderError.
- 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;
} - 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.
Modification Type: | Major | Last Reviewed: | 8/31/2005 |
---|
Keywords: | kbHOWTOmaster kbSystemData KB308651 kbAudDeveloper |
---|
|