#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)?