Artigo Clube Delphi Edição 38 - dbExpress – Arquitetura Interna II
Artigo da Revista Clube Delphi Edição 38.
Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML.
dbExpress – Arquitetura Interna II
Cursores e metadados
Neste artigo estenderemos a discussão sobre os fundamentos internos do dbexpress, que começamos no artigo “dbexpress – arquitetura interna” (edição 22). Iremos, através de exemplos, aprender a utilizar cursosres e a extrarir metadados.
Recomentado a leitura do artigo citado, para um melhor entendimento sobre o que será apresentado adiante, embora muitos conceitos mostrados sejam independentes. Para simplificar, em alguns pontos vamos relembrar trechos já apresentados na primeira parte, iniciamos com uma drescição de algumas interrfaces e seus principais métodos.
ISQLCursor
ISQLCursor é a interface responsável por manipular um dataset por um select, seja ele submetido diretamente ou retornado por uma stored procedure. Com essa interface, podemos extrair informações sobre o dataset e seus campos. Vejamos os principais métodos do ISQLCursor:
. setoption(ecuroption:tsqlcursorooption;ivalue;longint):sqlresult;stdcall;
Configura a propriedade informada através do parâmetro ecuroption com o valor passado em ivalue. Embora exista em todas as intefaces da arquitetura dbecpress, esse método não tem utilidade interface ISQLCursor. Todas as propriedades de um cursos são read-only, e uma chamada a esse métod retornará o erro DBCERR_NOTSUPPORTED.
.getoption(ecuroption:tsqlcursoroption;plvalue:pointer;imaxlength:smallint;outlength smallint):sqlresult;stdcall;
Lê o valor da propriedade infrmada no parâmetro ecuroption e o armazena no ponteiro passado no parâmetro plvalue imaxlenght indica o tamanho em bytes foram escritos em plvalue. Esse método é normalmente usado para obter o valor de atributos de campos presentes no dataset.
O parâmetro ecuroption (do tipo tsqlcursoroption) tem três valores possíveis:
- ecurobjectattrmame – o nome completo do objeto membro que o campo representa (usado para campos adt). O número da coluna e o nome do atributo aparecem numa estrutura do tipo objattrdesc;
- ecurobjecttypename – o nome do tipo de objeto que o campo representa (usado para campos adt). O número da coluna e o nome do tipo aparecem numa estrutura e do tipo objtypedesc;
- ecurparentfieldid – o número do campo parent do campo (usado para campos adt). O número da coluna e o número do campo parent aparecem numa estrutura do tipo objparentdesc."
[...] continue lendo...Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo