Home arrow ADO.NET arrow Page 4 - A Practical Comparison of ADO and ADO.NET
ADO.NET

A Practical Comparison of ADO and ADO.NET


Since "classic" ASP's humble beginnings, ADO data access classes and methods have been re-written to form ADO.NET. In this article Joe looks at the differences (in terms of classes, methods, and calling conventions) that exist between ADO and ADO.NET. He provides several practical examples that show us how to evolve from using ADO with ASP to using ADO.NET with C# and ASP.NET.

Author Info:
By: Joe O'Donnell
Rating: 4 stars4 stars4 stars4 stars4 stars / 72
March 01, 2002
TABLE OF CONTENTS:
  1. · A Practical Comparison of ADO and ADO.NET
  2. · Old versus new: ADO versus ASP.NET
  3. · Connecting to a database
  4. · Working with recordsets/rowsets
  5. · Calling stored procedures
  6. · Retrieving records as XML
  7. · Conclusion

print this article
SEARCH DEVARTICLES

A Practical Comparison of ADO and ADO.NET - Working with recordsets/rowsets
(Page 4 of 7 )

[Note] In ADO 2.x, we used the term recordset to refer to a collection of records returned from a query. In ADO.NET we use the term rowset. [End Note]

If we wanted to use a recordset object in ADO 2.x to store the results of a query and loop through these results, we could do so by calling its open and movenext methods. We could also check whether there were any records beyond our cursor by checking its eof variable, like this:

objRS.ActiveConnection = objConn

objRS.LockType = 1 'adLockReadOnly

objRS.CursorType = 0 'adOpenForwardOnly

objRS.Open "SELECT au_fname + ' ' + au_lname as name FROM authors"

while not objRS.EOF

Response.Write objRS("name") & "<br>"

objRS.MoveNext

wend


In ADO.NET, the OleDbDataReader and SqlDataReader classes can be used to hold rowsets. Both of these classes cannot be directly instantiated, and can only be created as a result of a call to the ExecuteReader method, like this:

string strQuery = "SELECT au_fname + ' ' + au_lname as name FROM authors";

SqlCommand objCmd = new SqlCommand(strQuery, objConn);

objCmd.CommandType = CommandType.Text;

SqlDataReader objDR = objCmd.ExecuteReader();

while(objDR.Read())

{

Response.Write(objDR["name"] + "<br>");

}


The Read() method of the SqlDataReader in our example above advances the rowsets cursor and gives us access to the next row. The SqlDataReader class has an overloaded indexer to accept either the name or index of the field to return. We could just as easily specify a field index rather that a name, like this:

while(objDR.Read())

{

Response.Write(objDR[0] + "<br>");

}


The return type from the SqlDataReaders indexer is actually an object, which, in our example above is implicitly converted to a string. If we knew that a field was going to be a specific data type, then we could specify an explicit case using C style casting:

while(objDR.Read())

{

// Perform an explicit case from object to int32

int intAge = (int)objDR[5];

}


[Note] When using both the OleDbDataReader and SqlDataReader classes, field indexes start at 0 and not 1. [End Note]
blog comments powered by Disqus
ADO.NET ARTICLES

- Datasets in Microsoft.Net
- Latest Developments in the .Net World
- Introduction to .NET
- Automatic Generation of Single Table SQL Sta...
- Data Access in .NET using C#: Part 1
- All You Need To Know About ADO.NET: Part 2/2
- All You Need To Know About ADO.NET: Part 1/2
- Easing Transition From ASP and ADO to ASP.NE...
- A Practical Comparison of ADO and ADO.NET

Watch our Tech Videos 
Dev Articles Forums 
 RSS  Articles
 RSS  Forums
 RSS  All Feeds
Write For Us 
Weekly Newsletter
 
Developer Updates  
Free Website Content 
Contact Us 
Site Map 
Privacy Policy 
Support 

Developer Shed Affiliates

 




© 2003-2017 by Developer Shed. All rights reserved. DS Cluster - Follow our Sitemap
Popular Web Development Topics
All Web Development Tutorials