Чтение нескольких строк и нескольких столбцов с помощью SqlDataReader в C# - PullRequest
1 голос
/ 12 января 2020

Мне нужно знать, как получить значения, возвращаемые несколькими строками и несколькими столбцами запроса, используя SqlDataReader в C#.

try
{
    SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString);
    connection.Open();

    string query = ("select cardname,cardnumber,expiry,cardballance from vwallet where username='" + uname + "'");

    SqlCommand cmd = new SqlCommand(query, connection);
    SqlDataReader reader = cmd.ExecuteReader();

    while (reader.Read())
    {
         //cardname = reader[0].ToString();
         //cardnumber = reader[1].ToString();
         //expiry = reader[2].ToString();
         //cardballance = reader[3].ToString();
         reader.
    }
}

Примечание. Я хочу отобразить возвращенный результат по запросу, т. е. имена карточек, номера карточек, срок действия и карточный баланс в метках.

Насколько я понимаю, код, который я написал, будет читать только один столбец строки и присваиваться переменным (объявленным уже в коде, а не вставленным здесь объявлением) ).

Данные, возвращаемые через таблицу:

see results of table here

Я хочу отобразить все это в метках.

Как прочитать все данные возвращается из таблицы (данные таблицы показаны на рисунке).

1 Ответ

3 голосов
/ 12 января 2020

Вы почти у цели. Вам просто нужен массив или коллекция для хранения строк.

public class MyCard
{
    public string Name { get; set; }
    public string Number { get; set; }
    public string Expiry { get; set; }
    public string Balance { get; set; }
   //Please note:  This needs updating to match the data type used in your DB table.
   //I have used string to show you a simple example.
}

Затем обновите свой код, включив в него:

SqlDataReader reader = cmd.ExecuteReader();
List<MyCard> MyCardList = new List<MyCard>();
while (reader.Read())
{
     MyCard mycard = new MyCard();
     mycard.Name = reader[0].ToString();
     mycard.Number = reader[1].ToString();
     mycard.Expiry = reader[2].ToString();
     mycard.Balance = reader[3].ToString();
     MyCardList.Add(mycard);
}
//Remember to close the reader and dispose of objects correctly.

Затем у вас есть список объектов MyCard со всеми вашими данными. .

...