BDE와 Delphi를 사용하여 DBASE 파일에 액세스하는 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/3221364

  •  13-09-2020
  •  | 
  •  

문제

우선, 나는 델파이에 관해서는 완전한 새롭고, 나는 학교에서 일부 터보 파스칼 프로그래밍을했지만, 약 14 년 전 ...

DBASE 데이터베이스와 BDE를 사용하는 상용 Delphi 프로그램이 있습니다.기본적으로 C #로 작성된 다른 응용 프로그램을이 데이터베이스에 작성한 다른 응용 프로그램을 인터페이스하여 선택, 삽입, 업데이트 및 삭제와 같은 SQL 작업을 수행 할 수 있습니다.

불행히도 DBASE로 OLEDB를 사용하여 끊어진 인덱스에서 기본 BDE 응용 프로그램 만 데이터에 안전하게 액세스 할 수있는 것 같습니다.

표준 입력 (읽기 / READLN)에서 SQL 문을 읽고 CSV 데이터를 표준 출력 (WRITELN)으로 출력 할 수있는 간단한 Delphi 콘솔 응용 프로그램을 만드는 것이 었습니다.

어떻게해야할까요?

다음 코드가있는 작업에 대한 간단한 TTable 액세스를 성공적으로 얻었습니다.

tbl := TTable.Create(nil);

tbl.DatabaseName := 'Exceline';
tbl.TableName := 'KUNDE.DBF';
tbl.Active := True;

WriteLn(tbl.RecordCount);

tbl.Active := False;
.

는 내가 동일하게 달성 할 수 있지만 직접 SQL 문을 실행할 수있는 방법이 있습니까?

도움이 되었습니까?

해결책

TQuery 구성 요소를 사용하여 동일한 작업을 수행 할 수 있습니다.

qry := TQuery.Create(nil);

qry.DatabaseName := 'Exceline';
qry.SQL.Add('SELECT COUNT(*) AS CNT FROM KUNDE');
qry.Active := True;

WriteLn(qry.FieldByName('CNT').AsString);

qry.Active := False;
.

다른 팁

SERG가 이미 썼습니다. TQUERY 객체를 사용하여 DBASE 테이블에서 SQL 쿼리를 실행할 수 있습니다.그러나주의 사항 : STDIN을 통해 프로그램에 SQL 쿼리를 전달하고 STDOUT에서 결과를 리턴하는 방법으로 SQL 쿼리를 전달하는 방법은 Windows에서 매우 느립니다.

또한 쿼리의 결과가 거대한 경우 일괄 처리 데이터를 반환하기 위해 프로그램에 추가 명령을 추가해야합니다. 그것은 아마도 더 쉽고 C #.

에서 델파이에서 COM 서버를 쓰는 COM 서버를 작성하는 것이 훨씬 더 나은 성능을 제공합니다.

및 하나의 마지막 점 : BDE는 Borland / CodeGear / Embarcadero가 수년 동안 지원되지 않았습니다.그것은 여전히 작동하지만, 특히 XP보다 새로운 Windows 버전으로 그런 식으로 유지하기가 어렵고 어렵습니다.한 번의 대안은 TDBF 일 수 있습니다 (SourceForge 참조). 그러나 나는 그것에 대한 정보에 입각 한 의견을주는 것에 대한 충분한 경험이 없습니다.

BDE 가 10 년 전 더 이상 사용되지 않기 때문에 유지되지 않았으므로 :

이점 데이터베이스 서버 를 고려 했습니까?DBASE, CLIPPER 및 기타 XBASE 에 액세스 할 수있는 서버입니다.

그것은 정말로 멋지 며, .NET 데이터 제공자가 있습니다.사용할 수 있습니다 .

솔루션 경로를 훨씬 덜 복잡하게 만듭니다.

- Jeroen

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top