![]() |
António Roberto Software |
|
Linguagens de Programação
2
|
3º ano da
Licenciatura em Informática de Gestão
|
Aula de 15 de Março de 2004
Apresentação das classes OleDbDataAdapter, DataSet e DataGrid
A arquitectura do projecto WinDADSDGAlunos:
reaproveitamos a Base de Dados Alunos.mdb (Access) do projecto das aulas de 14 e 19 de Janeiro, nomeadamente as Stored Procedures spInserirAluno, spActualizarAluno e spApagarAluno
reaproveitamos a tabela Alunos e as Stored Procedures spInserirAluno, spActualizarAluno e spApagarAluno, criadas no servidor Oracle na aula de 10 de Março
para comutar para uma das 2 base de dados no back-end (Access ou Oracle), basta alterar a Connection String no construtor da classe AcessoBD
o método public DataSet LerAlunos(),da classe AcessoBD, retorna um DataSet com os registos dos alunos obtidos da Base de Dados com a ajuda de um OleDbDataAdapter. Os dados contidos no DataSet são apresentados ao Utilizador através de um DataGrid.
o método public void ActualizarAlunos( DataSet ds )recebe o DataSet modificado pelo Utilizador ao interagir com o DataGrid, e repercute as alterações para a Base de Dados com a ajuda de um OleDbDataAdapter. O DataAdapter executa as Stored Procedures spInserirAluno, spActualizarAluno e spApagarAluno, respectivamente, para os registos inseridos, modificados e apagados. Validações e tratamento de erros
Em LerAlunos, utilizamos o método FillShema para carregar a informação acerca dos campos da tabela Alunos para o DataSet (ex:Chave Primária, Campos Requeridos).
Isto possibilita ao cliente exercer uma maior validação das acções do utilizador, detectando antecipadamente erros como a duplicação de chaves primárias ou valores não introduzidos em campos de preenchimento obrigatório. Deste modo evita-se que este tipo de erros sejam reportados apenas quando as alterações são repercutidas para a base de dados.
Em ActualizarAlunos, colocamos a propriedade ContinueUpdateOnError a true
caso ocorra um erro ao processar uma alteração de um registo, o update do conjunto dos registos não é interrompido, continuando no seguinte. Os registos onde ocorreram os erros são assinalados no DataGrid, e a descrição do erro aparece como tooltip. Para os erros ocorridos nas operações de Delete, é necessário invocar o método RejectChanges, de forma a esses registos ficarem visíveis no DataGrid com o respectivo símbolo de erro
Registo de erros observados com o Access como back-end (ver a aula de 18 de Março para comparar com o Oracle):
no método FillSchema, a informação acerca dos campos requeridos (not null) não é transmitida, pelo que esta validação não se processa no cliente como era desejável
o DELETE com a Stored Procedure spApagarAluno dá erro a partir do 2º registo apagado. No entanto, se o SQL estiver embebido, o problema já não se verifica.
Exportação de um DataSet para XML
|
Nome da Solução |
Tipo |
Código Fonte |
|
WinDADSDGAlunos |
Windows Application |
disponível na aula de 18 de Março |