최근에 좋은 친구를 위해 데이터베이스 개발 모듈을 작성할 때 데이터 배치 처리 문제가 발생했습니다.
데이터 배치 처리를위한 몇 가지 개발 방법에 대해 생각했으며 특별 요약을 즐기지 않고 공유합니다.
데이터베이스 애플리케이션 시스템에서 데이터는 종종 추가, 삭제 및 변경과 같은 배치됩니다.
이 배치 작업은 Append 및 Copy 명령을 사용하여 VFP와 같은 특수 데이터베이스 개발 도구의 해당 명령으로 수행됩니다.
명령 조항을 쉽게 완료 할 수 있습니다. 그러나 다른 개발 도구에는 유사한 명령이 없습니다.
대신 PowerBuilder와 같은 유사한 기능을 완료 할 수있는 제어 또는 객체를 제공합니다.
파이프 라인 (데이터 파이프 라인)을 사용하여 두 또는 동형 또는 다른 구성 테이블 사이의 데이터 배치 처리를 완료하십시오.
이 기사는 데이터베이스 개발에 Delphi를 사용할 때 타이머 구성 요소를 사용하여 배치 처리 방법을 소개합니다.
Delphi 개발에서 가장 많이 사용되는 방법은 데이터베이스 개발에 Delphi를 사용할 때 Ado 및 BDE입니다.
따라서 Borland는 BDE 구성 요소에 많은 경험을 쌓았으므로 데이터 배치 처리를 완료 할 수있는 데이터 배치 처리에 대한 TBATCHMOVE 제어가 있습니다.
tbatchmove의 모드 속성을 설정 한 다음 Execute 메소드를 호출하여 특정 작업을 완료해야합니다. BDE에 대한 도움.
이 기사의 다양한 운영 모드의 실제 결과는 Delphi의 데이터베이스 데스크탑에서 찾을 수 있습니다.
보았습니다.
이것은이 기사의 초점이 아니므로 델파이 문서의 명확한 의견에 관심이 있다면 확인하십시오.
이 기사의 초점은 다음과 같습니다. ADO의 데이터의 배치 처리 방법.
이 문제가 발생하면 일반적인 방법은 모든 데이터를 통과하고 루프를 삽입하는 것입니다.
그러나 여기서 이야기하고 싶은 것은 빠르고 효율적이며 권장되는 배치 처리 방법입니다. 특정 코드 및 작동 방법은 다음과 같습니다.
절차 tform1. formcreate (sender : tobject);
var
MyPath : 문자열;
Const
myPassw = '****'; /// 데이터베이스 비밀번호
시작하다
MyPath : = ExtractFilePath (Paramstr (0));
AdoConnection1.connectionstring : = '제공자 = microsoft.jet.oledb.4.0; data source ='+
myPath+'db/db.mdb; jet eledb : 데이터베이스 암호 ='+
myPassw+'; 지속 보안 정보 = false';
//////////// 데이터 엔진을 설정하고 암호를로드하십시오.
AdoConnection1.LoginPrompt : = false;
AdoConnection1.connected : = true;
adotable1.connection : = adoconnection1;
adotable1.tablename : = 'tab1';
adotable2.connection : = adoconnection1;
adotable2.tablename : = 'tab2';
노력하다
adotable.open;
adotable 1. open;
DataSource1.dataset : = adotable1;
dbgrid1.datasource : = dataSource1;
dbnavigator1.datasource : = DataSource1;
제외하고
MessageBox (0, '데이터베이스를 열 수 없다', '오류', mb_ok);
끝;
///////////////////////////////////////////////////////////////////////////4
시작하다
/////////////////// 오류 제어를 수행하는 이종 테이블의 배치 데이터 처리
DataSource2.dataset.insert;
adotable2.fields [0] .Asstring : = adotable1.fields [0] .Asstring;
adotable2.fields [1] .Asstring : = adotable1.fields [1] .Asstring;
DataSource1.dataset.next;
dataSource1.dataset.eof = true 인 경우 timer1.enabled : = false;
DataSource1.dataset.eof = true 인 경우 showmessage ( '데이터가 성공적으로 가져 왔습니다!');
제외하고
MessageBox (0, '데이터 가져 오기 실패', '오류', MB_OK);
끝;
끝;
DatamoDule2.datasource1.dataset.next; ////////////////////////////////////////////////////////////////////////4).
레코드 삽입 시간 (타이머 응답 시간)을 설정할 수 있습니다.
이것은 타이머 구성 요소의 특성에 의해 설계된 이질 테이블 사이의 데이터의 배치 가져 오기 기능입니다 .dataset.next 속성입니다.
그런 다음 삭제, 업데이트 및 기타 함수에 대해 유사한 코드를 구현할 수 있습니다 (데이터 소스 속성을 사용하여 수정하십시오).
쿼리 기능이 있기 때문에 TadoQuery 구성 요소를 개발 중에 사용합니다.
저자 : VIIVD
이메일 : [email protected]
날짜 : 2004.6.5