Как я могу вставить значения из двух таблиц в третью в winforms?
Здравствуйте,у меня есть вопрос относительно вставки из одной таблицы в другую на основе значения третьей таблицы.У меня есть 3 стола:
CREATE TABLE [dbo].[AttendanceList]( [sNr] [int] IDENTITY(1,1) NOT NULL, [SN] [char](10) NOT NULL, [fName] [nvarchar](max) NOT NULL, [lName] [nvarchar](max) NOT NULL, [dateArrival] [datetime] NOT NULL, [dateDeparture] [datetime] NULL, [Attending] [bit] NULL, [CourseID] [nvarchar](50) NULL, [Departed] [bit] NULL, PRIMARY KEY CLUSTERED ( [sNr] ASC CREATE TABLE [dbo].[RegisterStudent]( [SN] [char](10) NOT NULL, [sNr] [int] NOT NULL, [fName] [nvarchar](max) NOT NULL, [lName] [nvarchar](max) NOT NULL, PRIMARY KEY CLUSTERED ( [SN] ASC CREATE TABLE [dbo].[StudentCourses]( [StudentId] [char](10) NOT NULL, [CourseId] [char](10) NOT NULL ) ON [PRIMARY]
Я бы хотел, чтобы моя форма AttendanceList показывала всех студентов из RegisterStudent в AttendanceList на основе CourseId(который хранится в третьей таблице StudentCourses из-за того, что у студента может быть несколько курсов).Как это можно сделать с помощью sql?Заранее спасибо.
Что я уже пробовал:
Это метод, который я использую при загрузке данных в таблицу списка посещаемости:
private void LoadData() { string str = "insert into AttendanceList(SN,sNr,fName,lName) select SN,sNr,fName,lName from RegisterStudent p inner join StudentCourses c where c.CourseId='" + cmbClassId.SelectedValue.ToString() + "'"; da = new SqlDataAdapter(str, connstr); ds = new DataSet(); da.Fill(ds); dt = ds.Tables[0]; bi.DataSource = dt; dg.DataSource = bi; dg.ClearSelection(); txtStudentId.Focus(); var count = Convert.ToInt32(dg.Rows.Count.ToString())-1; txtCount.Text = count.ToString(); }
Richard Deeming
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]
string str = "insert into AttendanceList(SN,sNr,fName,lName) select SN,sNr,fName,lName from RegisterStudent p inner join StudentCourses c where c.CourseId = @CourseId"; da = new SqlDataAdapter(str, connstr); da.SelectCommand.Parameters.AddWithValue("@CourseId", cmbClassId.SelectedValue);