Microsoft KB Archive/225047

= FIX: Java OLE DB Simple Provider Does Not Work Reliably =

Article ID: 225047

Article Last Modified on 5/17/2007

-

APPLIES TO


 * Microsoft Visual J++ 6.0 Standard Edition
 * OLE DB Simple Provider Toolkit 2.0
 * Microsoft Data Access Components Software Development Kit 2.0
 * Microsoft Data Access Components Software Development Kit 2.0
 * Microsoft Data Access Components Software Development Kit 2.1
 * Microsoft Data Access Components 2.1 Service Pack 2
 * Microsoft Data Access Components 2.5

-



This article was previously published under Q225047



SYMPTOMS
An OLE DB Provider created using the Visual J++ 6.0 and the OLE DB Simple Provider Toolkit does not work reliably. When attempting to use such a provider from ActiveX Data Object (ADO) via the Recordset.Open method, the following error occurs:

-2147217865 (0x80040E37) Description unavailable.

The following application error may occur when using the provider from a Visual J++ or Visual Basic client:

The instruction at '0x7c00ba36' referenced memory at '0x00000004'. The memory could not be 'read'.

The following application error may occur when using the provider from a Visual C++ client:

Unhandled exception in  (MSJAVA.DLL): 0xC000005: Access Violation



CAUSE
The Microsoft OLE DB Simple Provider component (Msdaosp.dll) does not properly implement COM reference counting. This causes erratic results with any client of the provider, because the provider may release itself when its real reference count is greater than zero.



RESOLUTION
This problem has been fixed with Microsoft Data Access Components (MDAC) 2.1 Service Pack 2 (SP2). You can download the latest MDAC from the following Microsoft Universal Data Access Web site:

http://msdn2.microsoft.com/en-us/data/aa937695.aspx



STATUS
Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.



MORE INFORMATION
The new release of MDAC also fixes a problem in the Java OLE DB Simple Provider, which causes access violation errors when using the Recordset.Delete method.

