김승연 9월 13일에 포스트됨 공유하기 9월 13일에 포스트됨 안녕하세요. parambyname fieldbyname 두 방식의 차이점이 무었일까요 ? 감사합니다. 인용하기 이 댓글 링크 다른 사이트에 공유하기 더 많은 공유 선택 사항
0 Miniuser 9월 13일에 포스트됨 공유하기 9월 13일에 포스트됨 (edited) FireDAC의 FDQuery의 FieldByName, ParamByNAme을 말씀하시는게 맞을까요? 우선 ParamByName은 SQL을 작성할 떄, 조건이나, 데이터를 삽입할때 사용합니다. 예를 들어, ItemTbl에 Col1, Col2라는 항목을 Insert할 때 다음같이 사용합니다. FDQuery.SQLText := 'INSERT INTO ItemTBL Col1, Col2 VALUES(:Col1, :Col2)'; FDquery.ParamByName['Col1'].AsString := 'test'; FDquery.ParamByName['Col2'].AsInteger := 1; ... FDquery.ExecSQL; // ※ Param을 지정할 때에는 앞에 ':'을 붙여야 합니다. FieldByName은 Select문을 검색하고 난 후, 값을 가져올때 사용합니다. 예를 들어, ItemTbl이라는 테이블에 Col1, Col2를 조회한다음, 해당 컬럼들을 가져올 때 다음같이 사용합니다. var str : String; int : Integer; .... FDQuery.SQLText := 'SELECT Col1, Col2 FROM ItemTbl'; while NOT FDQuery.EOF do begin str := FieldByName('Col1').AsString; int := FieldByName('Col2').AsInteger; Next; end; Edited 9월 13일 by Miniuser 인용하기 이 댓글 링크 다른 사이트에 공유하기 더 많은 공유 선택 사항
0 Miniuser 9월 13일에 포스트됨 공유하기 9월 13일에 포스트됨 데브기어에 해당 내용이 정리된 글이 있어 공유드립니다. 한번 참고해보시면 좋을 것 같습니다. 참고 사이트 : 인용하기 이 댓글 링크 다른 사이트에 공유하기 더 많은 공유 선택 사항
0 김승연 9월 19일에 포스트됨 Author 공유하기 9월 19일에 포스트됨 감사합니다 ~ 참고해서 사용해보겠습니다 ~ 인용하기 이 댓글 링크 다른 사이트에 공유하기 더 많은 공유 선택 사항
0 Kori 9월 25일에 포스트됨 공유하기 9월 25일에 포스트됨 @Miniuser 님의 설명이 잘되어 었으므로, 저는 몇가지만 추가하겠습니다. (역시, Query 오브젝트에 대한 질문이라고 이해하고 설명함) 아래 사항을 알면 도움이 될 것입니다. (FDQuery를 기준으로 설명) TFDQuery는 TDataSet이다 (TDataSet의 자손이기 때문, 참새가 동물이듯) TFDQuery는 조상인 TDataSet을 확장하여 자신에게 데이터를 담기 위한 쿼리(query, 질의)를 가질 수 있다. 그래서, FDQuery는 (데이터를 가져오기 위한) 질의(query)를 가질 수 있고, (앞에서 설명했듯이, 쿼리한 결과를 담는) 데이터 집합이기도 하다. 즉, TFDQuery에서는이 두 가지를 모두 사용할 수 있습니다. FieldByName과 ParamByName을 각각 조금 더 부연하자면: FieldByName: 데이터집합에서 사용됨 FieldByName (Field By Name)은 TFDQuery의 프로퍼티 (정확히는, 조상인 TDataSet의 프로퍼티)이며, 필드의 이름을 콕 찍어서 지정하면, 해당 TField 오브젝트를 반환합니다. @Miniuser 님의 답변에 있는 예문에서는 반환된 TField의 AsString 프로퍼티를 사용하여 해당 필드에 들어있는 값을 문자열로 받아오고 있습니다. field는 흔히 클래스의 멤버 변수를 의미합니다. ParamByName: 쿼리 파라미터에서 사용됨 ParamByName (Parameter By Name)은 TFDQuery의 메서드 (정확히는 조상인 TFDDataSet의 메서드)이며, 파라미터의 이름을 콕 찍어서 지정하면, 해당 TFDParam 오브젝트를 반환합니다. @Miniuser 님의 답변에 있는 예문에서는 반환된 TDParam의 AsString 프로퍼티를 사용하여 해당 파라미터에 문자열 값을 지정하고 있습니다. Parameter는 함수를 사용할 때 그 함수에게 전달하려는 무언가(주로 값)를 의미합니다. 바꿔 말하면, 함수를 정의하는 쪽에서 보면, 외부에서 지정할 수 있도록 함수 선언에 붙여 놓은 변수라고 할 수 있습니다. (Para-는 동전의 양면과 같이 무언가에 붙어있는 것, -Meter는 길이, 값과 같이 측정되는 무엇) 참고로, Query 클래스는 각 프레임워크에 따라 이름과 방식이 조금 다르지만, 기본적인 틀은 같습니다. (FireDAC 프레임워크의 TFDQuery, BDE 프레임워크의 TQuery 와 DBExpress 프레임워크의 TSQLQuery 예를 들어 이 3 가지 클래스 모두 TDataSet의 자손입니다) 1 인용하기 이 댓글 링크 다른 사이트에 공유하기 더 많은 공유 선택 사항
질문
김승연
안녕하세요.
parambyname fieldbyname 두 방식의 차이점이 무었일까요 ?
감사합니다.
이 댓글 링크
다른 사이트에 공유하기
4 answers to this question
Recommended Posts
이 토의에 참여하세요
지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.