My first experiences programming data-driven computer systems required registering COM objects with the regsrv32.exe, invoking the Server.CreateObject method to create an ADODB.Connection and ADODB.Recordset, and then using the MoveFirst(), MoveLast(), MoveNext(), and MovePrevious() methods that navigate, forward only, through the result set. At the time, the practice was groundbreaking technology. The ADO data access technique laid the foundation for the next advancement, which Microsoft released in late 2005, ADO.NET. In late 2005, Microsoft released the .NET Framework version 2.0. Programmers said goodbye to regsrv32.exe, COM, and a whole lot of other unwanted features of a nonmanaged code way of life.
ADO.NET provided programmers with an object-oriented, or component-oriented, approach to creating data-driven computer systems. Programmers were able to isolate the SQL queries from the database connection, and the business logic from the data implementation logic. This multi-layered capability greatly reduced the complexity and the unwanted side effects caused by changes, while increasing the speed with which new or enhanced features are introduced.
However, despite the many new features and advancements provided by ADO.NET, programmers still faced difficulties developing data-driven software applications, including the following: