Search code examples
c#.netsqldatareadersqlcommandsql-view

Refering to view values one by one


I have the following code which establishing an SQL connection inside of a project I am working on. What I want to do is to create a for loop which contains a method and every time the loop repeats the method runs with a different value until all views of the returned query are used.

I can't figure out how to refer to every value of the view without saving the view to a list or an array first. Any ideas?

SqlConnection Con = new SqlConnection(@"Data Source=localhost\**;Initial Catalog=ML;User Id=sa;Password='**'");
string sql = @"select product_id,Name from E_PRODUCT_PROPERTY";
var mylist = new List<WineRating>();
using (var command = new SqlCommand(sql, Con))
{
    Con.Open();
    using (var reader = command.ExecuteReader())
    {
        while (reader.Read())
            new WineRating { product_id = reader.GetInt32(0), Name = reader.GetString(1) };                    

///Here goes the code I suppose

        method_name(reader.GetInt32(0), reader.GetString(1));

    }
}

public static int method_name(int product_id, string Name)
{
int num = x *2;
Console.WriteLine(num + Name);
}

Solution

  • Perhaps like this:

    using (var reader = command.ExecuteReader())
    {
        while (reader.Read())
        {
            MyMethodToPrintToScreen(reader.GetInt32(0), reader.GetString(1));
        }
    }
    

    With the method to print to screen

    private static void MyMethodToPrintToScreen(int id, string product)
    {
        //Do whatever you wish with the data: example
        Console.WriteLine($"My id: {id} | Product: {product}");
    }
    

    Edit
    Let me make it even more obvious(using your exact code):

    SqlConnection Con = new SqlConnection(@"Data Source=localhost\**;Initial Catalog=ML;User Id=sa;Password='**'");
    string sql = @"select product_id,Name from E_PRODUCT_PROPERTY";
    var mylist = new List<WineRating>();
    using (var command = new SqlCommand(sql, Con))
    {
        Con.Open();
        using (var reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
                method_name(reader.GetInt32(0), reader.GetString(1));
            }
        }
    }