Querying with the DataReader
The CData ADO.NET Provider for Email implements two ADO.NET interfaces you can use to retrieve data from IMAP: EmailDataAdapter and EmailDataReader objects. Whereas EmailDataAdapter objects retrieve a single result set of all the data that matches a query, EmailDataReader objects fetch data in subset increments as needed.
Using the EmailDataReader
The EmailDataReader retrieves data faster than the EmailDataAdapter because it can retrieve data in pages. As you read data from the EmailDataReader, it periodically requests the next page of results from the data source, if required. This causes results to be returned at a faster rate. The following example selects all the columns from the [INBOX] table:
C#
string connectionString = "Port=993;Server=outlook.office365.com;Password=password;User=user;Protocol=IMAP;SMTP Port=587;SMTP Server=smtp.office365.com;"; using (EmailConnection connection = new EmailConnection(connectionString)) { EmailCommand cmd = new EmailCommand("SELECT * FROM [INBOX]", connection); EmailDataReader rdr = cmd.ExecuteReader(); while (rdr.Read()) { Console.WriteLine(String.Format("\t{0} --> \t\t{1}", rdr["From"], rdr["Subject"])); } }
VB.NET
Dim connectionString As String = "Port=993;Server=outlook.office365.com;Password=password;User=user;Protocol=IMAP;SMTP Port=587;SMTP Server=smtp.office365.com;" Using connection As New EmailConnection(connectionString) Dim cmd As New EmailCommand("SELECT * FROM [INBOX]", connection) Dim rdr As EmailDataReader = cmd.ExecuteReader() While rdr.Read() Console.WriteLine([String].Format(vbTab & "{0} --> " & vbTab & vbTab & "{1}", rdr("From"), rdr("Subject"))) End While End Using