denis.larocque Ответов: 1

C# как показать следующий результат в текстовом поле из SQL


я хочу, чтобы у меня было более 1 пользователя с одним и тем же именем и фамилией. возможность нажимаем далее кнопку и показать в текстовом поле.

мой поисковый код отлично работает, но nextresult не работает.

Что я уже пробовал:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace recherchenext
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btSearch_Click(object sender, EventArgs e)
        {
          
            SqlConnection connection = new SqlConnection("Data Source=94187H2\\SQLEXPRESS;Integrated Security=TRUE;Initial Catalog=RSE");
            SqlCommand command;          
            SqlDataReader Reader;
            string selectQuery = "select * from CLIENT where Nom  =  '" + tbFirstNameS.Text + "'and Prenom = '" + tbLastNameS.Text + "'";
            connection.Open();
            command = new SqlCommand(selectQuery, connection);
            Reader = command.ExecuteReader();
          

           
                if (Reader.Read())
                    tbNom.Text = Reader["nom"].ToString();
                    tbPrenom.Text = Reader["Prenom"].ToString();
                    tbTelephone.Text = Reader["Telephone"].ToString();
            
            if (Reader.NextResult())
                tbNom.Text = Reader["nom"].ToString();
                tbPrenom.Text = Reader["Prenom"].ToString();
                tbTelephone.Text = Reader["Telephone"].ToString();

            connection.Close();


        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void btNext_Click(object sender, EventArgs e)
        {

        }
    }
        }

1 Ответов

Рейтинг:
5

Maciej Los

Если вы хотите перейти к следующему результату, я бы предложил загрузить данные из SqlDataReader в DataTable объект. Как же так? Видеть: объект DataTable.Метод Загрузки (IDataReader) (System.Data)[^]

Вы можете перемещаться вперед/назад между записями с помощью В LINQ[^]. Например:

//load data into that object
DataTable myData;
//this identify your current record
int currentRecord = 0;
private void btNext_Click(object sender, EventArgs e)
{
    var oneDataRow = myData.AsEnumerable()
        .Skip(currentRecord)
        .Take(1);
    //TextBox1.Text = oneDataRow[0];
    currentRecord+=1;
}


Для получения более подробной информации, пожалуйста, смотрите:
Перечисли.Пропустить(TSource) Для (Интерфейс IEnumerable(Метода), Типа Int32) (Система.В LINQ)[^]
Перечислимый.Take(TSource) Method (IEnumerable(TSource), Int32) (System.Linq)[^]
101 LINQ Samples in C#[^]

Но(!) напоследок я бы посоветовал почитать о пагинации:
Учебное пособие 24: подкачка и сортировка данных отчета[^]
Учебник 25: эффективное пролистывание больших объемов данных[^]
Пошаговое руководство: отображение, подкачка и сортировка данных с помощью элемента управления веб-сервером ListView[^]
Просмотр результатов запроса по страницам | Microsoft Docs[^]


Karthik_Mahalingam

5

Maciej Los

Спасибо, Картик