C # Сравнение значений из 2 таблиц в базе данных SQL Server 2005 и отображение в Gridview в VS2005

#c# #sql-server #visual-studio #sql-server-2005 #visual-studio-2005

#c# #sql-сервер #visual-studio #sql-server-2005 #visual-studio-2005

Вопрос:

Я использую VS2005 C # и базу данных SQL Server 2005.

Я пытаюсь сравнить значения между двумя базами данных.

Я могу извлечь переменную [studentName] из таблицы tStudent с помощью инструкции SELECT WHERE sql следующим образом: введите описание изображения здесь
введите описание изображения здесь

Теперь у меня есть другая таблица с именем StudentDetails. В нем есть 3 столбца: studentName, Address и ContactNum: введите описание изображения здесь

Ситуация такова, что я хочу использовать grep результат первого SQL-запроса в tStudent, который возвращает мне список студентов, чей [Статус] = УДАЛЕН.

И из списка запрошенных студентов я хочу брать по одному студенту за раз и выполнять поиск в моей таблице [StudentDetails].

Если она существует в [StudentDetails], я хотел бы использовать способ сохранения переменной [studentName] из таблицы StudentDetails и отображения ее в GridView на моей веб-странице. (здесь доступно множество решений. сохранить в базе данных; отобразить результат в GridView; сохранить в массиве; и т.д.)

Могу ли я узнать, какие способы и шаги я могу предпринять для достижения результата?

Пошаговое руководство и фрагменты кода очень ценятся, потому что я довольно слаб в программировании на C #.

Комментарии:

1. что вы уже пробовали для этого?

2. я ищу такие решения, как объединение двух таблиц в инструкции sql, пока еще ничего не пробовал.

Ответ №1:

вы можете сделать так:

  • Используйте Visual Studio для создания имени набора данных StudentDS, создайте имя таблицы «Student» в этом наборе данных, эта таблица будет содержать 3 столбца таблицы: Строка studentName; Строка Address; Строка ContactNum;
  • Заполните удаленных учеников в этот набор данных:

DataSet dset = new StudentDS(); Строка ConnectionString = «»;// зависит от вашей системы баз данных, см.http://www.connectionstrings.com

         using (connection = new OdbcConnection(connectionString))
        {
            connection.Open();

            command.Connection = connection;
            command.CommandText = "select StudentName, Address, ContactNum from tStudent WHERE status = 'DELETE'";

        OdbcDataAdapter da = new OdbcDataAdapter();
        da.SelectCommand = command;

        da.Fill(dset, "Student");
    }
  

— После того, как вы получите этот набор данных, вы можете выполнить итерацию по его строке, чтобы сделать то, что вы хотите.

 if(dset.Tables[0].Rows != null) {
for (int i = 0; i < dset.Tables[0].Rows.Count, i  ){
if(!ExistInStudentDetail(dset.Tables[0].Rows[i]["StudentName"]))
{
dset.Tables[0].Rows.remove(i);
i--;
}
}
}
  

//здесь логическое значение ExistInStudentDetail(String studentName) — это метод, вы можете создать sql для этого, как указано выше.

  • В вашей форме добавьте новое имя DataGridView «StudentForm», добавьте 1 столбец для этого имени DataGridView «studentName» и установите для его свойства привязки значение «studentName» (то же имя столбца в DataSet), а затем задайте источник данных для этой таблицы. StudentForm.DataSource = dSet;

HTH.

Ответ №2:

Это довольно простая проблема, но область ее применения довольно велика. Итак, вот:

Сначала вы действительно должны убедиться, что у вас есть уникальные столбцы в таблицах, которые вы ищете, это позволяет вам изменять эти отдельные строки и убедиться, что вы изменяете правильную. Я не видел никаких столбцов ID на скриншоте, поэтому я просто хотел осветить это.

Во-вторых, я бы создал класс для студентов. Здесь я бы создал поля или свойства всей информации, которую я хотел.

 class Student
{
  public string Name { get; private set; }
  public string Address { get; private set; }
  public string ContactNum { get; private set; }
}
  

вы можете либо использовать конструктор в вышеупомянутом классе и заполнить свойства этим, либо вы можете заполнить каждое из них с помощью select по вашему выбору.

В-третьих, я бы создал List<Student> students; это будет использоваться в качестве вашего справочного списка

 List<Student> deletedStudents = SQL Select Statement;
  

В-четвертых, я бы затем создал другую List<Student> detailedStudents;

Наконец, я бы сравнил два списка, а затем что-то сделал, когда было найдено совпадение.

Комментарии:

1. Привет, CBRRacer, я действительно не знаю, что делает класс Student. Я вижу, что вы сохранили удаленных студентов в списке (deletedStudents). Как я могу брать по одному результату из списка за раз из (deletedStudents) для сравнения со вторым списком (detailedStudents)?