ADO - ACTIVE DATA OBJECTS

Conteúdo

Um pouco de história.

No princípio era o texto e trabalhava-se com arquivos ASCII, depois surgiu a DAO (Data Access Object) , lançada em 1992 e usada apenas pelo MS Access 1.0; em 1993 a versão da DAO foi lançada para o MS Access 1.1 e Visual Basic 3.0.

Em 1994 a versão 2.0 veio junto com o Access 2.0 , para quem usava o VB 3.0 havia a 'Compatibility Layer'. A versão 2.5 da DAO veio junto com o VB 4.0 e foi a última para o ambiente de 16 bits. Em 1995 a versão 3.0 contemplava o MS Acces 7.0 e Excel 7.0 e o VB 4.0 para ambiente de 32 bits. 

Nesta época foi lançado também o RDO versão 1.0 que permitia acesso via ODBC a base de dados usadas no ambiente cliente/Servidor de uma maneira mais simples e rápida pois implementa uma fina camada de código sobre o ODBC API.

Em 1996 chegamos a versão 3.5 do Jet para MS Access 97 e MS Excel 97 (Windows 98) e o VB 5.0 e a versão 2.0 do RDO. Após o lançamento da versão 5.0 do Visual Basic a ADO ficou pronta , por isso não veio junta com o VB 5.0.

O ADO seria então uma evolução ao RDO ? Ficaríamos tentados a supor , mas não, o ADO não é apenas mais um controle para conexão a banco de dados como a DAO ou o RDO , ele vai além disso, pois pode ser usado para acessar qualquer fonte de informações. 

Poderiamos dizer que o ADO é uma solução genérica proposta pela Microsoft para acesso uniforme a dados armazenados em diferentes fontes de informação: Web, Client/Servidor, Textos, ISAM(Access,Dbase),etc. Ele é baseado na OLE DB o qual é um conjunto de interfaces do tipo COM ( Component Object Model). O ADO é a interface entre a OLE DB e a sua aplicação.

Com o uso de ADO, podemos criar aplicações para acessar e manipular dados em um servidor de banco de dados via um provedor OLE DB. Ele pode ser usado em qualquer ferramenta que o suporte tais como: Visual Basic, Access, ASP (Active Server Pages) , Excel, etc.

Naturalmente o ADO possui características chaves para se desenvolver aplicações cliente/servidor e para a Internet e ao contrário da DAO ou RDO não possui uma rígida estrutura hierárquica de objetos, pois seus objetos podem ser criados independentemente uns dos outros,e, ao mesmo tempo este modelo de objetos é parecido com o modelo DAO e RDO , só que bem mais simples, de forma que se você esta familiarizado com DAO ou RDO os traumas não serão muitos.

A vantagem do modelo ADO é , segundo a microsoft , a alta velocidade, a facilidade de uso e a baixa utilização de memória. Na minha humilde opinião isto pode ser verdade para aplicações Cliente/Servidor e Web , já para acesso a base de dados padrão ISAM ( Access, Dbase , FoxPro) tenho lá minhas dúvidas.

Para usar ADO via ODBC você vai precisar de um DSN (Data Sorce Name) registrado. O ADO , através da tecnologia OLE DB, trabalha com provedores OLE DB, e o OLE DB é uma implementação COM para acesso de dados universal. Vislumbra-se a substituição gradual de ODBC pela tecnologia OLE DB, e a ADO atua como um envoltório ActiveX para OLE DB. Mais uma coisa: aprenda SQL. 

 

ADO - Um pouco de teoria.

O modelo de objetos ADO - O modelo de objetos ADO é simples e parecido com o modelo DAO/RDO ,ele é composto de seis objetos primários mostrados na figura 1.0. Note que os objetos Errors, Parameters e Fields são partes de uma coleção.
 
Fig. 1.0
Vamos examinar mais de perto cada um deste objetos para tentar compreender o modelo de programação ADO. Tenha paciência pois seremos suscintos na descrição de cada item. Se quiser obter informações detalhadas sobre ADO visite o site da microsot - http://www.microsoft.com/ado.

Objeto Connection

É usado para criar uma conexão com um servidor de dados e pode ser criado independente de qualquer outro objeto, ele é análogo ao objeto Database do DAO e ao objeto rdoConnection do RDO. Ele representa uma única e específica sessão com uma fonte de dados. Como a ADO acessa dados e serviços de provedores OLE DB o objeto Connection é usado para especificar um provedor particular e os parâmetros necessários.

O objeto Connection contém duas coleções:

  1. Errors - contém os erros gerados durante uma conexão.
  2. Properties - representa o conjunto de propriedades para uma conexão
O objeto Connection contém os seguintes métodos.
  1. BeginTrans - inicia uma transação, se a base de dados suportar o processsamento de transações.
  2. Close - Encerra uma conexão.
  3. commiTrans - Encerra uma transação.
  4. Execute - executa um comando SQL.
  5. Open - abre uma conexão para uma fonte de dados.
  6. RollbackTrans - Cancela e desfaz uma transação.
O objeto Connection contém as propriedades dadas a seguir:
  1. Attributes - Lê os valores de XactAttributeEnum para uma conexão.
  2. CommandTimeout - Determina o tempo de espera por um comando antes de gerar um erro.
  3. ConnectionString - Contém a informação necessária para estabelecer uma conexão , tal como um nome DSN ou uma senha.
  4. ConnectionTimeout - Determina o tempo de espera quando da tentativa de uma conexão antes de gerar um erro.
  5. DefaultDatabase - Indica a base de dados padrão para uma conexão.
  6. IsolationLevel - Lê ou determina o nível de isolação de uma transação.
  7. Mode - indica as permissões disponíveis em uma conexão para modificar dados.
  8. Provider - Indica o provedor OLE DB para uma conexão.
  9. Version - Indica a versão do ADO.

Objeto Error

Um objeto Error é gerado sempre que um erro for encontrado em uma operação ADO. Ele contém os detalhes sobre os erros de acesso a uma fonte de dados relacionados a uma conexão com um provedor.Cada objeto Error representa um erro específico do provedor e não do ADO os quais são mostrados em tempo de execução.

O objeto Error contém as propriedades:

  1. Description - explica o erro detalhando-o.
  2. HelpContext - retorna uma variável de contexto ID como um inteiro longo associado a um tópico do arquivo de HELP.
  3. HelpFile - retorna o caminho do arquivo de HELP
  4. NativeError - indica o código de erro específico do provedor para um objeto error.
  5. Number - indica o número do erro.
  6. Source - informa o nome do objeto que gerou o erro.
  7. SQLstate - retorna uma string de cinco caracteres no padrão SQL ANSI.
A coleção Errors possue um método:
  1. Clear - remove todos os erros dos objetos Error na coleção.
A coleção Errors tem duas propriedades:
  1. Count - indica o número total dos objetos Error.
  2. Item - retorna um objeto Error.
 

Objeto Command

O objeto Command contém a definição de um comando SQL ou de uma stored procedure ou de consultas ação que são executadas em uma fonte de dados. Ele é igual ao objeto QueryDef da DAO ou ao objeto rdoPreparedStatement do RDO. Pode ser usado para consultar um banco de dados e retornar registros em um objeto Recordset ou executar determinada operação.

O objeto Command possui 5 propriedades:

  1. ActiveConnection - indica o objeto Connection ao qual o objeto Command esta associado
  2. CommandText - Contém o texto de um comando SQL
  3. CommandTimeout - Determina o tempo de espera durante a tentativa de estabelecer uma conexão.
  4. CommandType - Contém o tipo de Comando.(Stored Procedure, comando SQl, etc..)
  5. Prepared - Indica se irá ou não salvar uma versão compilada do comando antes de sua execução.
O objeto Command possui dois métodos:
  1. CreateParameter - Cria um novo objeto Parametro
  2. Execute - Executa o comando , consulta SQL ou stored procedure informada na propriedade CommandText
O objeto Command possui duas coleções:
  1. Parameters - A coleção dos objetos parametros do objeto Command.
  2. Properties - O conjunto de propriedades para o objeto Command
 

Objeto Parameter

Um objeto Parameter representa um parâmetro ou argumento associado a um objeto Command baseado em uma consulta parametrizada ou uma stored procedure.

O objeto Parameter possui oito propriedades:

  1. Attributes - é a soma de um ou de mais de um dos valores de ParameterAttributesEnum
  2. Direction - Indica se o parâmetro representa um parâmetro de entrada de saída, ambos ou o retorno de uma stored Procedure.
  3. Name - O nome do parâmetro que pode ser usado como referência.
  4. NumericScale - Determina ou retorna o número de casa decimais usadas
  5. Precision - Determina ou retorna o número máximo de dígitos usados enm valores numéricos.
  6. Size - Tamanho máximo em bytes ou caracteres
  7. Type - O tipo de dados do objeto parameter
  8. Value - O valor associado ao objeto parameter
O objeto Parameter possui um método
  1. AppendChunck - Usado para passar dados do tipo long binary ou long Character .
A coleção Parameters possui três métodos:
  1. Append - Anexa um objeto Parameter à coleção.
  2. Delete - Remove o objeto Parameter da coleção.
  3. Refresh - Atualiza o objeto Parameter da coleção.
 

Objeto Property

Representa um característica dinâmica de um objeto ADO definida pelo provedor. Os objetos ADO possui dois tipos de propriedades :
  1. Internas - implementadas no ADO e imediatamente disponíveis para qualquer novo objeto. Elas não aparecem como objetos Property em uma coleção Properties.
  2. Dinâmicas - definidas pelo provedor. Aparecem na coleção Properties do objeto ADO.
O objeto Property possui 4 propriedades:
  1. Attributes - indica as características da propriedade específica do provedor.
  2. Name - o nome da propriedade
  3. Type - o tipo de dados da propriedade
  4. Value - as configurações da propriedade.
 

Objeto Recordset

Um objeto recordset representa um conjunto de registros de uma tabela gerados por uma consulta ou por um comando executado. Seu comportamento é idêntico ao recordset do DAO e ao rdoResultSet do RDO.

Você pode usar o objeto recordset para manipular dados no provedor da mesma forma que o faz localmente , neste caso os recordsets são chamados de Cursores, e podem ser definidos como:

  1. Dynamic Cursor - Permite a movimentação através do Recordset , ver adições, alterações e excluções feitas pelo usuário.
  2. Keyset Cursor - Idêntico a Dynamic Cursor ; somente não permite acesso a registros adicionados ou excluídos por outro usuário.
  3. Static Cursor - Gera uma cópia de um conjunto de registros , não permitindo acesso a adições, alterações e exclusões feitas por outros usuários.É o único cursor suportado localmente.(ADOR)
  4. Forward-only Cursor - Idêntico ao Dynamic Cursor ; permitindo somente a movimentação para a frente.
Você não precisa criar um objeto Connection para criar apenas um recordset, pode fazer isto através do método Open via connection string , desta forma a ADO cria um objeto connection sem associá-lo a uma variável objeto. Se desejar trabalhar com múltipos recordsets em uma mesma conexão então deverá criar e abrir um objeto connection.

O objeto recordset possui duas coleções:

  1. Fields - Contém todos os Objetos Fields do objeto Recordset
  2. Properties - Contém todas os objetos Property para uma instância específica do objeto Recordset.
O objeto recordset possue dezenove métodos:
  1. Addnew - Cria um novo registro
  2. CancelUpdate - Cancela atualizaçoes pendentes
  3. Clone - Cria uma cópia de um objeto recordset
  4. Close - Fecha um objeto recordset
  5. Delete - Exclui o registro atual de um objeto recordse aberto.
  6. GetRows - Retorna múltiplos registros de um recordset em um vetor.
  7. Move - Muda a posição do registro atual.
  8. MoveFirst - Muda a posição do registro para o primeiro registro do recordset e o torna o registro atual.
  9. MoveLast - Muda a posição do registro para o último registro do recordset e o torna o registro atual.
  10. MoveNext - Muda a posição do registro para o próximo registro.
  11. MovePrevious - Muda a posiçãodo registro para o registro anterior.
  12. MoveNextRecordset - Retorna o próximo objeto recordset.
  13. Open - Abre um Cursor.
  14. Requery - Atualiza os dados de um recordset executando novamente a consulta que o gerou.
  15. Resync - Atualiza os dados de um objeto recordset.
  16. Supports - Informa a funcionalidade que o objeto recordset suporta.
  17. Update - Salva as alterações feitas no registro atual.
  18. UpdateBatch - Escreve todas as atualizações pendentes em lote para o disco.
O objeto Recordset contém dezessete propriedades:
  1. AbsolutePage - Informa o número da 'página' de localização do registro atual.
  2. AbsolutePosition - Determina a posição do registro atual.
  3. ActiveConnection - Informa a qual conexão o objeto recordset pertence.
  4. BOF - Informa que o registro atual está antes do primeiro registro.(Início do Arquivo)
  5. Bookmark - Retorna o bookmark que identifica o registro atual ou atribui ao registro atual o bookmark de um outro registro do recordset.
  6. CacheSize - Informa o número de registros do recordset que estão na memória.
  7. CursorType - Informa o tipo de cursor usado em u recordset.
  8. EditMode - Mostra o status da edição que esta sendo realizada no registro atual.
  9. EOF - Informa que o registro atual está posicionado depois do último registro.(Fim de Arquivo)
  10. Filter - Informa um filtro para os dados em um recordset.
  11. LockType - Informa o tipo de bloqueio dos registros durante a edição.
  12. MaxRecords - Informa o número máximo de registros que serão retornados de uma consulta.
  13. PageCount - Informa o número de páginas de dados que um recordset contém.
  14. PageSize - Mostra quantos registros constituem uma página no recordset.
  15. RecordCount - Informa o número de registros em um recordset.
  16. Source - Informa a fonte de dados em um objeto recordset ou o nome do objeto ou aplicação que gerou um erro.
  17. Status - Informa o status do registro atual.
 

Objeto Field e coleção Fields

O objeto Field representa a coluna de dados com um tipo de dados comum. A coleção Fields contém todos os objetos Fields de um objeto Recordset.

O objeto Field contém dois métodos:

  1. AppendChunck - Anexa dados para um objeto Field binário ou Texto.
  2. GetChunck - Retorna o contéudo de um objeto Field binário ou Texto.
O objeto Field possui dez propriedades:
  1. ActualSize - Informa o tamanho atual de um campo válido.
  2. Attributes - Informa uma ou mais características do objeto Field.
  3. DefinedSize - Informa o tamanho definido de um objeto Field.
  4. Name - Informa o nome do objeto Field
  5. NumericScale - Determina ou retorna o valor que indica o número de casas decimais para valores numéricos.
  6. OriginalValue - Informa o valor do campo que existe em um registro antes da alteração.
  7. Precision - Determina ou retorma o valor que indica o número máximo de dígitos usados para representar valores.
  8. Type - Informa o tipo de dados de um objeto Field.
  9. UnderlyingValue - Mostra o valor atual do objeto Field em um arquivo.
  10. Value - Informa o valor de um objeto Field.
Ufa ! pensei que não ia terminar , mas de qualquer forma aí esta um resumo de descrição do objeto ADO 2.0. A seguir veremos um exemplo de utilização efetiva da ADO. Até lá...

Conteúdo

 

Continua...

Retorna