2010-04-27 3 views
1

DataSet을 사용하여 코드에서 데이터베이스를 업데이트하는 데 문제가 있습니다. 저는 SQL Server 2008과 Visual Studio 2008을 사용하고 있습니다. 지금까지 제가 한 것은 이것입니다.DataSet에서 데이터베이스 업데이트

두 개의 열 (id nchar (10) 및 name nchar (50))이있는 MyTable이라는 테이블을 SQL Server에 만들었습니다.

그런 다음 데이터 세트 마법사를 사용하여이 테이블로 구성되고이 데이터 세트 MyDataSet을 호출하는 VB.NET 프로젝트에서 데이터 소스를 만들었습니다.

나는 버튼 클릭에 다음 코드를 실행합니다 :

Try 
     Dim myDataSet As New MyDataSet 
     Dim newRow As MyDataSet.MyTableRow = myDataSet.MyTable.NewMyTableRow 
     newRow.BeginEdit() 
     newRow.id = "1" 
     newRow.name = "Alpha" 
     newRow.EndEdit() 
     myDataSet.MyTable.AddMyTableRow(newRow) 
     myDataSet.AcceptChanges() 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 

내가 이것을 실행하고 0 행

무엇 내가 놓친

를 반환 SQL Server의 행을 확인? 이 행을 추가하거나 데이터 세트의 변경 사항을 데이터베이스에 저장하려면 어떻게해야합니까? TableAdapter를 사용하는 다른 예제를 보았지만이 작업을 수행하고 싶지는 않습니다. 데이터 세트를 사용하여이 작업을 수행 할 수 있어야합니다. 나는 틀린가?

도움을 주시면 대단히 감사하겠습니다.

답변

3

당신은 당신의 데이터 어댑터() 데이터베이스에 변경 사항을 작성하는 데 필요한 명령어와 데이터 어댑터 또는 TableAdapter에를해야 할 것이다 물론

MyDataAdapter.Update(MyDataSet) 

에 Update 메서드를 호출해야합니다.

DataSet은 메모리/연결이 끊긴 "데이터베이스"에 있습니다.

DataAdapter는 DataBase와 통신하는 위젯입니다. 다른 데이터베이스에 대해 서로 다른 DataAdapter가 있습니다. SQL Server의 경우 SqlDataAdapter를 사용하십시오.

AcceptChanges를 호출하면 모든 변경 사항이 이미 변경된 것으로 표시되므로 dataadapter로 데이터베이스를 업데이트하면 변경 사항이 데이터베이스에 기록되지 않습니다.

데이터를 데이터베이스 (ADO.NET 방식)에 유지하려면 에 DataAdapter 또는 TableAdapter를 사용해야합니다.

2

AcceptChanges으로 전화하지 마십시오. DataTable의 모든 변경 내용 추적 정보가 재설정되어 행이 최신임을 나타냅니다.

DataSet 자체는 데이터베이스 상호 작용을 수행하지 않습니다. DataAdapter (이 경우에는 사용하고 싶지 않다고 말한 TableAdapter)을 적절히 사용해야하며 Update을 호출하여 테이블을 저장해야합니다.

+0

SQL Server에서 테이블에 대해 주석을 제거한 다음 선택한 상위 1000 개 행을 선택했지만 여전히 0 행을 반환합니다. – ChrisAU

+1

@clawson : 단순히 AcceptChanges를 호출하지 않고, AcceptChanges 대신 update *를 호출해야한다고 말하고 있습니다. –