Esse artigo faz parte da revista Clube Delphi edição 38. Clique aqui para ler todos os artigos desta edição



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. ...

Quer ler esse conteúdo completo? Tenha acesso completo