이 질문은 인터베이스 관련이라기보다는 델파이 질문이군요.
이후에는 델파이 Q/A로 올려주시기 바랍니다.
데이터셋으로는 SQLDataSet이나 SQLQuery를 쓰면 됩니다.
SQLDataSet을 쓴다고 가정하고, 쿼리문을 넣을 때는 SQLDataSet.CommandText := '쿼리문'; 이렇게 하면 되고요.
select에서 싱글로우든 멀티로우든 마찬가지입니다.
쿼리를 실행할 때는, select에서는 SQLDataSet.Open; 하면 되고 그외의 쿼리문(insert, update, delete 등)은
SQLDataSet.Execute; 를 호출하면 됩니다.
다음으로 아셔야 할 것은 파라미터 전달입니다. 다음과 같은 쿼리문을 전달한다고 할 때,
select * from employ where salary>5000
salary 필드와 비교한 5000이라는 상수값은 가변일 수 있습니다. (대부분 그렇겠죠)
이렇게 가변인 부분을 쿼리문으로 전달하는 방법에는 두가지 방법이 있습니다.
한가지는 그냥 문자열 연산으로 하는 겁니다.
SQLDataSet.CommandText := 'select * from employ where salary>' + strSalaryCondition;
SQLDataSet.Open;
하지만 이 방법으로는 코드가 난잡해져서 쿼리문이 잘 보이지도 않고(가독성이 떨어지죠) BLOB 필드는 아예
전달할 방법이 없습니다. 그래서 이런 경우에 쓰는 것이 파라미터입니다.
SQLDataSet.CommandText := 'select * from employ where salary>:SALARY';
SQLDataSet.ParamByName('SALARY').AsString := strSalaryCondition;
SQLDataSet.Open;
짐작하시겠지만, CommandText로 전달하는 쿼리문에서 콜론(:)으로 시작되는 부분이 파라미터로 인식됩니다.
물론 쿼리문에 파라미터가 여러개일 수 있습니다. 그러면 Open이나 Execute를 하기 전에 파라미터를 채우는
루틴도 그 파라미터의 갯수만큼 있어야 에러가 나지 않습니다.
그럼...
김도형 님이 쓰신 글 :
: dbExpress 를 사용하기로 하여
:
: SQLCONNECTION 컴포넌트를 사용해 만든 InterbaseDB와 연결까지 끝냈습니다.
:
: 델파이에서 SQL 문을 쓰려면 어떡해야 하는지 잘 모르겠습니다.
:
: 1-row query,
: multi-row query,
: 1-row insert (변수로 받아서..)
:
: 세가지만 예제 올려 주시면 감사하겠습니다... (꾸벅~)
:
|