Search code examples
c#.netoledbdatareader

converting resultset from OleDbDataReader into list


Consider a Winforms app connecting to a SQL Server 2008 database and running a SQL SELECT statement:

string myConnectionString = "Provider=SQLOLEDB;Data Source=hermes;Initial Catalog=qcvaluestest;Integrated Security=SSPI;";

string mySelectQuery = "SELECT top 500 name, finalconc from qvalues where rowid between 0 and 25000;";

OleDbConnection myConnection = new OleDbConnection(myConnectionString);

OleDbCommand myCommand = new OleDbCommand(mySelectQuery, myConnection);

myCommand.Connection.Open();

OleDbDataReader myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);

How can you read the results of the query into a list?


Solution

  • Assume you have defined a class that is something like

    class MyData
    {
        public string Name {get; set;}
        public int FinalConc {get; set;} // or whatever the type should be
    }
    

    You would iterate through the results of your query to load a list.

    List<MyData> list = new List<MyData>();
    while (myReader.Read())
    {
        MyData data = new MyData();
        data.Name = (string)myReader["name"];
        data.FinalConc = (int)myReader["finalconc"]; // or whatever the type should be
        list.Add(data);
    }
    
    // work with the list
    

    If you just need one of the given fields, you can forego the class definition and simply have a List<T>, where T is the type of whatever field you want to hold.