2014-11-09 5 views
1

델파이 프로그래밍에 익숙합니다. 나는 현재 간단한 노트북 프로그램을 만들고 있는데 도움이 필요하다. 5 개의 tEdit 필드가있는 연락처라는 양식이 있습니다. 연락처 테이블에 레코드를 삽입하기 위해 sybase 데이터베이스에 저장 프로 시저를 만들 수있어서 델파이 programm로 호출 할 수 있다고 생각합니다. 델파이에서 어떻게이 프로 시저를 호출합니까? 삽입 될 값은이 tEdit 필드에 입력 된 사용자로부터 가져와야합니다. 누구든지 어떤 제안이 있습니까? 아니면 잘못된 생각을하고 있습니까? 미리 감사드립니다.저장 프로 시저 - 델파이 프로그래밍을 사용하여 sybase db 테이블에 레코드 삽입

+0

나는 ['here'] (http://www.sybase.com/delphi)를 시작할 것입니다. – TLama

+0

FireDac 공유기를 통해 이미 데이터베이스에 연결되어 있습니다. 것은 그것이 저장 프로 시저를 사용하여 레코드를 삽입하는 좋은 방법인지 모르겠습니다, 그리고 삽입해야하는 값으로 tEdit 필드에서 텍스트를 번역하는 방법을 모르겠다 :/임 혼동 – TechnoA

+0

SP를 사용하여 레코드 추가는 괜찮지 만 델파이 개발자가 데이터베이스 서버에 들어가는 것을 결정하는 것은 항상 사치 스럽지는 않습니다 (데이터가 아니라 사용 가능한 SP의 관점에서). Google에서 Delphi 앱에서 db-aware 컨트롤을 사용하는 데 대한 온라인 자습서를 무료로 제공합니다 - Delphi에는 TDataSet을 통해 데이터베이스 데이터를 처리하는 TDBEdit와 같은 컨트롤이 포함되어 있으므로 TEdits가 필요하지 않습니다. OLH를 참조하십시오. – MartynA

답변

0

몇 가지 옵션이 있으며 사용중인 VCL 컨트롤에 따라 다릅니다. (1). tTable 구성 요소를 통해 삽입 할 수 있습니다. 이렇게하면 빠르고 쉬운 저수준 제어 기능을 사용할 수 있습니다. 양식에서 구성 요소를 놓고 구성 요소 속성 (tablename 등)을 설정 한 다음

(2)과 같은 값을 설정합니다. SQL을 사용하십시오. 폼에 SQL 구성 요소를 놓습니다. 매개 변수를 사용하여 SQLText 속성을 설정합니다. 예 : "테이블 (MyField) 값에 삽입 : X" 제 생각에 이것은 복잡한 상황, 상관 된 하위 선택 등에서하기가 더 쉽다는 것입니다.

MySQL.Close; 
MySQL.ParamByName('X').AsString := 'BOB'; 
ExecSQL; 

(3). 저장 프로 시저를 사용하십시오. -이 장점은 여러 응용 프로그램에서 사용할 수 있으며 쉽게 변경할 수 있다는 것입니다. SQL 코드를 업데이트하려면 데이터베이스에서 한 번 업데이트하고 (응용 프로그램에서 변경해야 함) 여러 개의 사용자에게 응용 프로그램을 배포해야합니다.

VCL 라이브러리의 특성을 모르지만이 코드는 거의 (2)로 식별됩니다. 실제로는 실행할 루틴을 지정하고 매개 변수 값을 지정한 다음 저장 프로 시저를 실행합니다.

이러한 모든 루틴은 오류 코드 또는 예외 코드를 반환합니다. 항상 확인하는 것이 좋습니다.

다음은 qLoader라는 SQL 문을 사용하는 좀 더 복잡한 예입니다. qLoader는 데이터 모듈에 있습니다. 매개 변수를 전달하고 SQL 문을 실행 한 다음 모든 결과를 반복합니다.

try 
    with dmXLate.qLoader do 
    begin 

    Close; 
    ParamByName('DBTYPE').AsString := DBType; 
    Open; 

    while not dmXLate.qLoader.Eof do 
     begin 
     // Here is where we process each result 
     UserName:= dmXLate.qLoader.FieldByName('USERNAME').AsString;  

     dmXLate.qLoader.Next; 
     end; 


     end; 

except 
     on E: Exception do 
     begin 
     ShowMEssage(E.Message); 
     exit; 
     end; 
    end;