Easy to use VS performance: At one end where dataadaptor is quite easy to use, where as datareader for better performance. RowCount: Often after we fire select query , we would like to know how many recrods we retrieved. With a DataReader its not possible to know rowcount unless we finish iteration through all rows. you will need to use another SELECT COUNT(*) query. the quick solution can be as below Dim dr As SqlDataReader Dim cmd As New SqlCommand("Select Count(*) from Jokes;Select * from Jokes", Me.SqlConnection1) Dim TotalRows As Integer Me.SqlConnection1.Open() dr = cmd.ExecuteReader() While dr.Read() TotalRows = dr(0) MsgBox(TotalRows.ToString()) dr.NextResult() While dr.Read() MsgBox(dr("JokeHeading")) End While End While Me.SqlConnection1.Close() With dataadaptor its easy, since data is stored in DataSet we get rowcount also we can iterate to next and previous records , which is not possible using datareader Passing Data between layers: one major limitation is you can't serialized datareaders, only alternative is DataSets. Regards Jignesh Desai http://dotnetjini.jigneshdesai.com |