2013-06-23 1 views
0

이제 C# winForm을 만들고 사용자가 편집 할 수 있도록 두 테이블에서 검색된 데이터를 표시하기 위해 표를 사용해야합니다.DataGridview를 사용하여 C# winform의 업데이트를위한 2 개의 테이블 데이터 표시

표는 다음과 같습니다.

학생 테이블 :

id int 
name char(10) 

주제 테이블 :

id int 
name char(10) 

studentsubject 테이블 :

id int (Pri key, AUTO_INCREMENT) 
student_id int 
subject_id int 
mark int 

특정 학생, 예를 들어,의 과목을 보여줄 것의 WinForm에서 격자 다음으로 SQL ID = 12345 :

select studentsubject.id, subject.name, studentsubject.mark 
from subject, studentsubject 
where studentsubject.student_id = 12345 
and studentsubject.subject_id = subject.id 

자궁강이 데이터는 데이터 세트에 투입 한 후 첫 번째 열 (studentsubject.id)와 함께 그리드에 넣고 숨겨져있다.

DataGridview를 사용하여이를 수행하고 사용자가 표시를 변경하고 새 제목에 새 행을 추가하고 DataGridview에서 행을 삭제하여 제목을 삭제하도록 할 수 있습니다.

하지만 문제는 그리드에서 데이터베이스로 데이터를 다시 변경하는 방법입니다.

대신 DataGrid를 사용해야합니까 ??

들으

다음
+0

http://stackoverflow.com/questions/16009857/asp-net-how-to-update-a-database-from-a-gridview-c- : 여기

는 코드입니다 날카로운 – Kzest

답변

0

UPDATE, INSERT하고 명령은 사용자의 요구 사항에 해당하는 DELETE :

update studentsubject 
set mark = @mark 

insert into [subject] (name) 
values (@name); 
insert into studentsubject (student_id, subject_id, mark) 
values (1, @@identity, @mark) 

declare @subject_id int; 
select @subject_id = subject_id 
from studentsubject 
where id = @id; 
delete from studentsubject 
where id = @id; 
delete from [subject] 
where id = @subject_id 

난 당신이 자동 기반으로 실행되는 작업을 결정할 수 있습니다 becaues의 SqlDataAdapter를 사용하여 업데이트를 수행하는 것이 좋습니다 DataRow의 상태. 필요한 것은 SqlDataAdapter.Update 메소드를 실행하는 것입니다. 물론 SqlDataAdapter.DeleteCommand, SqlDataAdapter.InsertCommandSqlDataAdapter.UpdateCommand 속성을 할당해야합니다.

adapter.InsertCommand = connection.CreateCommand(); 
adapter.InsertCommand.CommandText = "insert into [subject] (name) values (@name); insert into studentsubject (student_id, subject_id, mark) values (1, @@identity, @mark)"; 
adapter.InsertCommand.Parameters.AddRange(new SqlParameter[] { 
    new SqlParameter("@name", SqlDbType.Char, 10, "name"), 
    new SqlParameter("@mark", SqlDbType.Int, 1, "mark") 
}); 
adapter.UpdateCommand = connection.CreateCommand(); 
adapter.UpdateCommand.CommandText = "update studentsubject set mark = @mark"; 
adapter.UpdateCommand.Parameters.Add("@mark", SqlDbType.Int, 1, "mark"); 
adapter.DeleteCommand = connection.CreateCommand(); 
adapter.DeleteCommand.CommandText = "declare @subject_id int; select @subject_id = subject_id from studentsubject where id = @id; delete from studentsubject where id = @id; delete from [subject] where id = @subject_id"; 
adapter.DeleteCommand.Parameters.Add("@id", SqlDbType.Int, int.MaxValue, "id"); 
관련 문제