2009-07-21 1 views
0

나는이 질문을 받았다는 것을 알고 있습니다. here. 하지만 제 질문은 약간 다릅니다. 데이터 집합이 연결이 끊어진 원리를 염두에두고 설계되었을 때 응용 프로그램의 예기치 않은 종료를 처리하는 기능, 즉 전원 장애 또는 Windows가 멈추거나 시스템 예외가 다시 시작되는 기능을 제공하는 기능으로 제공되었습니다. 사용자가 약 100 개의 행을 입력했으며 데이터 세트에서만 수정되었다고 가정 해보십시오. 일반적으로 데이터 세트는 응용 프로그램을 닫거나시기 적절하게 업데이트됩니다.예기치 않은 오류가 발생할 경우 제 데이터 세트에 어떤 변화가 생깁니 까

vb 6.0을 사용한 프로그래밍에서는 모든 상호 작용이 데이터베이스와 직접적으로 발생하므로 이전의 성공적인 트랜잭션은 자동으로 커밋됩니다. 데이터 세트를 사용하여 어떻게 할 수 있습니까?

답변

0

DataSet은 절대로 데이터베이스에 직접 액세스 할 수 없으며 단절된 모델입니다. 기계 고장으로부터 복구 할 수있는 의도는 없습니다.

데이터베이스에 대해 실시간으로 작업하려면 DataReader를 사용하고 데이터베이스에 대해 DbCommands를 실행하여 변경 내용을 확인해야합니다. 이것은 당연히 데이터베이스 서버에 대한 부하를 증가시킵니다.

대부분의 응용 프로그램에서 두 가지의 균형을 잡아야합니다. 사용자가 방금 중요한 데이터를 새 행으로 입력했다는 것을 알고 있으면 데이터베이스에 삽입 명령을 실행하고 캐시 된 DataSet에 사본을 저장합니다. 그런 다음 연결 해제 된 데이터에 대해 로컬 쿼리를 실행할 수 있으며 삽입이 즉시 저장됩니다.

0

DataSet은 매우 쉽게 직렬화 될 수 있으므로 파일 시스템에 대한 DataSet의 직렬화를 사용하여 디스크에 대한 자체 백업을 구현할 수 있습니다. 이렇게하면 보호 기능이 제공되지만 응용 프로그램이 이전에 디스크에 저장 한 데이터를 확인하기 위해 자신의 코드를 작성해야합니다. ...

또한 DataSet을 무시하고 SqlDataReaders 및 SqlCommands 동일한 종류의 '데이터베이스에 직접 액세스'에 대해 설명하고 있습니다.

+0

당신은 바로 거기에 있고, 그 다음 질문은 http://stackoverflow.com/questions/1160639/why-switch-from-ado-to-ado-net입니다. 만약 내가 아직도 sqldatareaders와 sqlcommands를 사용해야한다면 왜 ado.net으로 전환해야합니까? –