ADO - ACTIVE DATA OBJECTS
Conteúdo
- Um pouco de história.
- ADO - Um pouco de teoria.
- ADO - Exemplo prático.
- Usando ADO
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.
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.
Fig. 1.0 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:
O objeto Connection contém os seguintes métodos.
- Errors - contém os erros gerados durante uma conexão.
- Properties - representa o conjunto de propriedades para uma conexão
O objeto Connection contém as propriedades dadas a seguir:
- BeginTrans - inicia uma transação, se a base de dados suportar o processsamento de transações.
- Close - Encerra uma conexão.
- commiTrans - Encerra uma transação.
- Execute - executa um comando SQL.
- Open - abre uma conexão para uma fonte de dados.
- RollbackTrans - Cancela e desfaz uma transação.
- Attributes - Lê os valores de XactAttributeEnum para uma conexão.
- CommandTimeout - Determina o tempo de espera por um comando antes de gerar um erro.
- ConnectionString - Contém a informação necessária para estabelecer uma conexão , tal como um nome DSN ou uma senha.
- ConnectionTimeout - Determina o tempo de espera quando da tentativa de uma conexão antes de gerar um erro.
- DefaultDatabase - Indica a base de dados padrão para uma conexão.
- IsolationLevel - Lê ou determina o nível de isolação de uma transação.
- Mode - indica as permissões disponíveis em uma conexão para modificar dados.
- Provider - Indica o provedor OLE DB para uma conexão.
- 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:
A coleção Errors possue um método:
- Description - explica o erro detalhando-o.
- HelpContext - retorna uma variável de contexto ID como um inteiro longo associado a um tópico do arquivo de HELP.
- HelpFile - retorna o caminho do arquivo de HELP
- NativeError - indica o código de erro específico do provedor para um objeto error.
- Number - indica o número do erro.
- Source - informa o nome do objeto que gerou o erro.
- SQLstate - retorna uma string de cinco caracteres no padrão SQL ANSI.
A coleção Errors tem duas propriedades:
- Clear - remove todos os erros dos objetos Error na coleção.
- Count - indica o número total dos objetos Error.
- 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:
O objeto Command possui dois métodos:
- ActiveConnection - indica o objeto Connection ao qual o objeto Command esta associado
- CommandText - Contém o texto de um comando SQL
- CommandTimeout - Determina o tempo de espera durante a tentativa de estabelecer uma conexão.
- CommandType - Contém o tipo de Comando.(Stored Procedure, comando SQl, etc..)
- Prepared - Indica se irá ou não salvar uma versão compilada do comando antes de sua execução.
O objeto Command possui duas coleções:
- CreateParameter - Cria um novo objeto Parametro
- Execute - Executa o comando , consulta SQL ou stored procedure informada na propriedade CommandText
- Parameters - A coleção dos objetos parametros do objeto Command.
- 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:
O objeto Parameter possui um método
- Attributes - é a soma de um ou de mais de um dos valores de ParameterAttributesEnum
- Direction - Indica se o parâmetro representa um parâmetro de entrada de saída, ambos ou o retorno de uma stored Procedure.
- Name - O nome do parâmetro que pode ser usado como referência.
- NumericScale - Determina ou retorna o número de casa decimais usadas
- Precision - Determina ou retorna o número máximo de dígitos usados enm valores numéricos.
- Size - Tamanho máximo em bytes ou caracteres
- Type - O tipo de dados do objeto parameter
- Value - O valor associado ao objeto parameter
A coleção Parameters possui três métodos:
- AppendChunck - Usado para passar dados do tipo long binary ou long Character .
- Append - Anexa um objeto Parameter à coleção.
- Delete - Remove o objeto Parameter da coleção.
- 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 :O objeto Property possui 4 propriedades:
- Internas - implementadas no ADO e imediatamente disponíveis para qualquer novo objeto. Elas não aparecem como objetos Property em uma coleção Properties.
- Dinâmicas - definidas pelo provedor. Aparecem na coleção Properties do objeto ADO.
- Attributes - indica as características da propriedade específica do provedor.
- Name - o nome da propriedade
- Type - o tipo de dados da propriedade
- 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:
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.
- Dynamic Cursor - Permite a movimentação através do Recordset , ver adições, alterações e excluções feitas pelo usuário.
- Keyset Cursor - Idêntico a Dynamic Cursor ; somente não permite acesso a registros adicionados ou excluídos por outro usuário.
- 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)
- Forward-only Cursor - Idêntico ao Dynamic Cursor ; permitindo somente a movimentação para a frente.
O objeto recordset possui duas coleções:
O objeto recordset possue dezenove métodos:
- Fields - Contém todos os Objetos Fields do objeto Recordset
- Properties - Contém todas os objetos Property para uma instância específica do objeto Recordset.
O objeto Recordset contém dezessete propriedades:
- Addnew - Cria um novo registro
- CancelUpdate - Cancela atualizaçoes pendentes
- Clone - Cria uma cópia de um objeto recordset
- Close - Fecha um objeto recordset
- Delete - Exclui o registro atual de um objeto recordse aberto.
- GetRows - Retorna múltiplos registros de um recordset em um vetor.
- Move - Muda a posição do registro atual.
- MoveFirst - Muda a posição do registro para o primeiro registro do recordset e o torna o registro atual.
- MoveLast - Muda a posição do registro para o último registro do recordset e o torna o registro atual.
- MoveNext - Muda a posição do registro para o próximo registro.
- MovePrevious - Muda a posiçãodo registro para o registro anterior.
- MoveNextRecordset - Retorna o próximo objeto recordset.
- Open - Abre um Cursor.
- Requery - Atualiza os dados de um recordset executando novamente a consulta que o gerou.
- Resync - Atualiza os dados de um objeto recordset.
- Supports - Informa a funcionalidade que o objeto recordset suporta.
- Update - Salva as alterações feitas no registro atual.
- UpdateBatch - Escreve todas as atualizações pendentes em lote para o disco.
- AbsolutePage - Informa o número da 'página' de localização do registro atual.
- AbsolutePosition - Determina a posição do registro atual.
- ActiveConnection - Informa a qual conexão o objeto recordset pertence.
- BOF - Informa que o registro atual está antes do primeiro registro.(Início do Arquivo)
- Bookmark - Retorna o bookmark que identifica o registro atual ou atribui ao registro atual o bookmark de um outro registro do recordset.
- CacheSize - Informa o número de registros do recordset que estão na memória.
- CursorType - Informa o tipo de cursor usado em u recordset.
- EditMode - Mostra o status da edição que esta sendo realizada no registro atual.
- EOF - Informa que o registro atual está posicionado depois do último registro.(Fim de Arquivo)
- Filter - Informa um filtro para os dados em um recordset.
- LockType - Informa o tipo de bloqueio dos registros durante a edição.
- MaxRecords - Informa o número máximo de registros que serão retornados de uma consulta.
- PageCount - Informa o número de páginas de dados que um recordset contém.
- PageSize - Mostra quantos registros constituem uma página no recordset.
- RecordCount - Informa o número de registros em um recordset.
- Source - Informa a fonte de dados em um objeto recordset ou o nome do objeto ou aplicação que gerou um erro.
- 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:
O objeto Field possui dez propriedades:
- AppendChunck - Anexa dados para um objeto Field binário ou Texto.
- GetChunck - Retorna o contéudo de um objeto Field binário ou Texto.
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á...
- ActualSize - Informa o tamanho atual de um campo válido.
- Attributes - Informa uma ou mais características do objeto Field.
- DefinedSize - Informa o tamanho definido de um objeto Field.
- Name - Informa o nome do objeto Field
- NumericScale - Determina ou retorna o valor que indica o número de casas decimais para valores numéricos.
- OriginalValue - Informa o valor do campo que existe em um registro antes da alteração.
- Precision - Determina ou retorma o valor que indica o número máximo de dígitos usados para representar valores.
- Type - Informa o tipo de dados de um objeto Field.
- UnderlyingValue - Mostra o valor atual do objeto Field em um arquivo.
- Value - Informa o valor de um objeto Field.
Continua...
Retorna