Guia do Programador. Versão /4/2006

Tamanho: px
Começar a partir da página:

Download "Guia do Programador. Versão 1.5.0.13-1/4/2006"

Transcrição

1 Versão /4/2006 Guia do Programador Tecnologia de Informação Av. ACM, Ed. Fernandez Plaza, 22º andar Cidadela, Salvador - BA CEP: Tel: (71) FAX: (71)

2 ÍNDICE Objetivo...3 A quem se destina?...3 Pré-Requisitos...3 O que há de novo? UniFw.Net Objetivo Projeto básico das aplicações.net com o UNIFW Camada de apresentação Camada de negócio Camada de dados Sequência básica de execução Implementando a camada de Dados Projeto da camada de dados A camada de Dados Implementando utilizando UniComponent Implementando utilizando o SQLDatabaseDAC Auditoria Registro de Atributo de Auditoria Criação de uma nova Operação Auditoria Implementando a camada de Negócio Projeto da camada de negócio A camada de negócio Implementando com o UniComponent Usando mais de uma classe de Dados Integração com Workflow Tratamento de Erros Implementando a camada de apresentação Introdução Projeto da Camada de Apresentação ASPX x ASCX A Classe Unitech.Web.FWPage A Classe Unitech.Web.Template A Classe Unitech.Web.Frame O processo de desenvolvimento de telas Implementando uma tela com o Unifw Telas Simples (SimpleGrid, SimpleForm e SimpleDetail) Usando o BookMark Redirecionamento de Páginas Componentes Visuais Dicionário Ajuda Mensagens Dicionarizadas Critério de seleção de tópicos sensíveis a contexto Criando apresentações para tópicos usando o XSL do Tipo de Tópico Inserindo referências para tópicos relacionados nos textos das seções do tópico Log e Tratamento de Erros Configuração do Ambiente/Componentes WebConfig Página inicial Página de autenticação (login) Tópicos Avançados Envio de s Informações sobre o usuário autenticado Ciclo de vida de uma Página ASP.NET Utilização do GAC Inspetores WEB Serviços Agendamento de Automático de Relatórios Configuração do Serviço RelatorioPendentes Tracer...48 Pág.2

3 9. Preparação do Ambiente de Desenvolvimento do UNIFW.NET Softwares Básicos e Ambiente Passos para preparação do ambiente F.A.Q Bibliografia...54 Objetivo Este documento tem como objetivo servir de referência rápida para desenvolvedores que pretendem se utilizar de recursos do UniFW.Net para desenvolver suas aplicações. Através deste documento, pode-se tanto obter uma visão geral sobre o funcionamento e programação com o UniFW.Net, quanto as formas de utilização de diversos dos seus componentes. A quem se destina? Desenvolvedores que procuram conhecer ou lembrar, da correta utilização de um determinado componente ou funcionalidade existente no UniFW.Net. Pode ser utilizado também por desenvolvedores que pretendem aprender a utilizar um novo recurso disponibilizado pelo mesmo e que podem ser utilizados no desenvolvimento de novas aplicações ou funcionalidades. Pré-Requisitos Fluência no desenvolvimento de aplicações WEB na plataforma MS.NET Fluência nas linguagens VB.NET ou C#. Fluência na linguagem DDL e TransactSQL no MS SQLServer O que há de novo? Em Agendamento Automático de Relatórios (ver tópico 8.6.1) é apresentada uma maneira de identificar o arquivo binário a ser enviado pelo serviço. Pág.3

4 1. UniFw.Net 1.1. Objetivo Este documento tem como objetivo fornecer informações essenciais aos desenvolvedores de páginas ASPX e controles ASCX que se utilizem do framework Unifw para este fim Projeto básico das aplicações.net com o UNIFW O Unifw (Unitech Framework WEB) é um framework para desenvolvimento de aplicações WEB para a plataforma.net 1.0 da Microsoft, desenvolvido pela Unitech. Composto por diversos módulos, o UNIFW fornece ao desenvolvedor soluções prontas para serem reutilizadas e especializadas para novas aplicações em fase de projeto, ou implementação. O diagrama abaixo demonstra a arquitetura básica do Unifw: Aplicação X WebControls UNIFW Inspetores Web Workflow Segurança Auditoria Conteúdo Serviço Ajuda Sequenciador Dicionário Validators Serviços De acordo com o diagrama acima, diferente de uma simples biblioteca de componentes, o framework UNIFW representa o núcleo da aplicação desenvolvida. É ele quem possui os principais algoritmos e estruturas normalmente utilizadas pelas aplicações WEB feitas na plataforma.net, assim como os ganchos utilizados para se integrar e especializar seu comportamento básico. O UNIFW é composto dos seguintes módulos: Web: representado pelo assembly Unitech.Web. Possui estruturas que possibilitam o controle de execução das páginas, tais como FWPage, Templates e Frames. Segurança: representado pelo assembly Unitech.UNIFW.Seguranca. Possui as estruturas para configuração das políticas de segurança, tais como domínios, usuários, papeis e grupos de trabalho. Workflow: representado pelo assembly Unitech.UNIFW.Workflow. Módulo com as estruturas de controle e configuração de aplicações que utilizam Workflow, tais como fluxos, transições, entidades de fluxo e solicitações de transição. Auditoria: representado pelo assembly Unitech.UNIFW.Auditoria. Possui as estruturas para implementação da auditoria de operações nas aplicações. Serviço: representado pelo assembly Unitech.UNIFW.Servico. Possui as estruturas para implementação de serviços assíncronos executados pelas aplicações. Com elas, pode-se Pág.4

5 implementar classes que representam serviços que serão executados em intervalos previamente configurados no framework. Ajuda: representado pelo assembly Unitech.UNIFW.Ajuda. Estrutura para implementação de Help integrado à aplicação. Ou seja, pode-se cadastrar os tópicos associados às telas e, em tempo de execução, montar a página de help de acordo com a configuração feita. WebControls: representado pelo assembly Unitech.Web.WebControls. Biblioteca de componentes para composição de telas WEB através de ASPXs/ASCXs. Possui classes que representam componentes visuais HTML tais como UniTextBox, UniDataGrid, UniTreeView, UniDropDownList e outras mais, que herdam de componentes já existentes no Framework.NET Microsoft. Conteúdo: representado pelo assembly Unitech.UNIFW.Conteúdo. Possui as estruturas para gerência de notícias e banners a serem disponibilizadas pela aplicação. Dicionário: representado pelo assembly Unitech.UNIFW.Dicionário. Possui as estruturas para gerência de Mensagens e Textos dicionarizados. Pode-se cadastrar Textos para os controles visuais, ou mensagens de erros das páginas em diversos idiomas, e conforme a configuração da aplicação, o Framework se encarregará de mostrar o texto no idioma correto. Voltado para o aumento da produtividade no desenvolvimento de aplicações WEB, na plataforma.net, o projeto do Unifw é feito para melhor se encaixar na estrutura de aplicações em 3 camadas: apresentação, negócio e dados, normalmente utilizadas para este fim. Para cada camada o Unifw fornece a infra-estrutura necessária para seu correto projeto e controle de execução, possibilitando ao projetista e desenvolvedor uma maior chance de sucesso em seu desenvolvimento. È importante lembrar que o Unifw.NET é um framework criado sobre o Framework.Net Microsoft, portanto parte deste pôde ser reaproveitada e especializada, tal como os componentes visuais e componentes validators Camada de apresentação A camada de apresentação tem como objetivo fornecer ao usuário todas as funcionalidades existentes na aplicação. Baseada na linguagem HTML e Javascript, as interfaces de aplicações WEB são construídas em tempo de execução no servidor WEB associado. Na plataforma.net há uma separação visível entre o layout da página (HTML ASPX/ASCX) e seu código de execução (CodeBehind). Estes componentes devem ser combinados de forma a manter as seguintes características: Limpeza de codificação: páginas ASPX/ASCX não devem conter códigos embutidos, apesar de poderem ter, assim como seu CodeBehind não serve para montar páginas HTML. Reutilização de código: é desejável que se possa reutilizar código de montagem de páginas, tais como lógica de validação de campos e seqüência básica de execução de telas semelhantes. Transparência de controle: funcionalidades de controle tais como segurança e auditoria devem ser aplicadas de forma transparente aos componentes implementados. Para esta camada, o Unifw fornece componentes que possibilitam o controle desde o recebimento da requisição HTTP, à montagem da página solicitada. Neste documento, serão discutidos as principais estruturas e componentes envolvidos com o controle de execução da camada de apresentação, que serão devidamente detalhados mais adiante. Pág.5

6 1.4. Camada de negócio A camada de negócio tem como objetivo fornecer à aplicação todas as funcionalidades de controle da lógica de negócio da aplicação. É nesta camada que estão representadas as entidades e processos envolvidos com as funcionalidades disponibilizadas pela camada de apresentação. Todas as regras de validação, controle de processos e integridade lógica dos dados são devidamente implementados nesta camada. Fazem parte desta camada componentes que se utilizam de COM+, DataSets, Transações distribuídas etc. Um bom projeto e implementação de componentes da camada de negócio deve possibilitar as seguintes características: Independência da camada de apresentação: componentes de negócio devem poder ser utilizados por componentes da camada de interface de forma independente. Ou seja, componentes de negócio não podem fazer referência à componentes da camada de interface, pois se criará um acoplamento indesejado. Performance adequada: a depender do tipo de solução a ser implementada, uma diferente estrutura de programação deve ser utilizada para atender ao requisito levantado. Flexibilidade de configuração: mudanças previstas de comportamento devem ser disponibilizadas sem a necessidade de reprogramação de componentes. Isto só é possível com um projeto de baixo acoplamento entre componentes estratégicos. O framework Unifw fornece a classe Unitech.Component.BSComponent para apoio ao desenvolvimento da camada de negócio Camada de dados A plataforma.net não dispõe atualmente de recursos de persistência automática em banco de dados, portanto se faz necessário o acesso ao mesmo através de objetos ADO.NET para atualização ou apenas consulta dos dados existentes. Um projeto de componentes da camada de dados deve possuir as seguintes características: 1. Independência da camada de negócio: componentes da camada de dados não devem fazer referência à estruturas da camada de negócio. 2. Desacoplamento e Flexibilidade: em muitos casos ocorrem mudanças do banco de dados que se está utilizando para o acesso. Nestes casos se faz necessária a implementação de novas classes de acesso a banco de dados (utilizando o ADO.NET) que o façam da maneira adequada para o novo banco de dados utilizado. Com isso, se faz necessária a implementação de uma estrutura que possibilite a mudança dos componentes de acesso a dados sem que isto implique em qualquer impacto para classes de negócio que os utilizem. O Unifw disponibiliza componentes que auxiliam a implementação de componentes de acesso a base de dados de diversos tipos. Componentes como Classes DBComponent, Unitech.Data, fornecem funcionalidades prontas de abertura de conexão, conversão de resultados de Stored Procedures em DataSets, formatação de dados SQL. Os detalhes sobre a implementação dos componentes da camada de dados com o Unifw serão detalhados mais adiante. Pág.6

7 1.6. Sequência básica de execução Aplicações projetadas para utilizar as estruturas do Unifw possuem em comum uma sequência básica de execução. Esta sequência se inicia no recebimento da requisição HTTP e finaliza com o término do processamento da página solicitada. O diagrama abaixo exibe os principais passos envolvidos no processamento das requisições recebidas: Browser FWPage Inspetor Template Arq. ASCX Classes BS Classes DB BD HTTP ValidaSeguranca MontaPagina Load exec negócio exec. dados persistir No diagrama anterior, é exibida a sequência básica de execução de uma típica aplicação WEB que se utiliza do Unifw. Seguem as descrições dos principais componentes envolvidos: Browser: aplicação cliente WEB. É ele que exibe a interface ao usuário e cria as novas requisições HTTP que serão enviadas ao servidor. Estas requisições contém informações que indicam qual tela, ação e parâmetros da solicitação. FWPage: componente integrante do Unifw, que centraliza o recebimento das requisições HTTP enviadas pelos clientes. Cabe a este componente efetuar as validações e encaminhar o processamento das requisições recebidas. Este encaminhamento pode ser resumido na verificação de segurança(inspetor) e carregamento do arquivo de Template. Inspetor: cabe ao inspetor, todas as validações e verificações necessárias para se autenticar e autorizar o usuário que enviou a requisição. Além disso, efetua os registros de auditoria, conforme configurado. Template: cabe ao template identificar quais arquivos (.ASCX) que deverão ser carregados nos quadros do template da tela requisitada. Arq.ASCX: implementação de um arquivo ASCX que constrói a interface HTML que será exibida para o cliente, normalmente composta por tabelas, campos de entrada de dados e javascripts. Cabe a esta implementação apenas a formatação adequada do resultado da solicitação feita. Qualquer implementação mais complexa, que envolva chamada de componentes de negócio, condições ou laços, devem ser feitas no CodeBehind deste ASCX que fará o processamento necessário. Classes BS: implementação da camada de negócio da aplicação. São classes implementam todas as rotinas de validação e processamento necessárias para a operação e integridade das informações mantidas. Classes DB: implementação da camada de dados da aplicação. São classes que implementam consultas e execuções no banco. BD: banco de dados utilizado. Contém as tabelas com os dados das entidades utilizadas na aplicação. A depender do projeto, pode ainda conter procedures. A descrição detalhada de implementação de cada componente e dos recursos do Unifw existentes para cada situação será devidamente feita nas próximas sessões deste documento. Pág.7

8 2. Implementando a camada de Dados 2.1. Projeto da camada de dados Geralmente existe um projeto especifico para a camada de dados a qual é o contêiner de classes de um mesmo módulo com a função de acessar a base de dados. As referências relacionadas aos projetos de camadas de dados são as seguintes: - System - System.Data - System.EnterpriseServices - System.XML - Unitech.Component - Unitech.Data.Interface A nomenclatura utilizada aos projetos de camadas de dados segue o formato: NOME_APLICACAO.NOME_MODULO.DB Ex: Unitech.Unifw.Segurança.DB NOME_APLICACAO = Unitech.Unifw MÓDULO = Segurança TIPO DAS CLASSES = Acesso a Dados (por causa do DB) Nesse projeto, por exemplo, conterá a classe FUNCAO, responsável pelo acesso a base de dados na tabela FUNCAO (tabela pertencente ao módulo de segurança). Normalmente é criado um projeto para camada de dados a cada SGBD utilizado na aplicação. Desta forma se torna mais fácil a conversão de sistemas para SGBDs diferentes A camada de Dados A plataforma.net possui um conjunto de objetos (ADO.NET) para gerência de interação com a base de dados, tal como o antigo ADO. A principal diferença entre eles é que o ADO.NET trabalha em uma arquitetura desconectada, os dados são obtidos de uma base de dados e são armazenados (cache) em sua máquina local. O UNIFW provê classes e interfaces que facilitam a interação com esses objetos de acesso a dados da plataforma.net. Os assemblies que provêem estas facilidades são o Unitech.Data e Unitech.Component. Veremos agora com mais detalhes a implementação de uma classe de dados que utiliza estes recursos, mas lembre-se que o uso destes recursos no desenvolvimento de uma aplicação com o UNIFW não é obrigatório. A classe de dados a ser criada pode herdar de Unitech.Componet.DBComponent, esta por sua vez possui as seguintes propriedades e o seguinte método: public IDatabase SGBD{...} Retorna uma Instancia do tipo Unitech.Data.IDataBase que representa o Banco de Dados corrente da classe de dados, conforme cadastro de classes de dados no UNIFW. public int NewNumber{...} Obtem um novo ID (Número Sequencial) para a classe de dados vinculada a este componente, através de chamadas a classes do assembly Unitech.Data. Para que esta propriedade funcione corretamente é preciso ter cadastrado um registro para esta classe na tabela de Seqüência no Banco de Dados. protected IDataParameter [] FillParameters(string storedprocedurename, DataRow datarow) {...} Este método é útil para execução de procedures que requerem parâmetros. Ele retorna um array de IDataParameters já preenchido com os dados do DataRow informado. O array é criado com base no nome da StoredProcedure. O processo de buscar os parâmetros da StoredProcedure fica transparente para o Pág.8

9 desenvolvedor, a única restrição é que o DataRow possua colunas com nomes e tipos compatíveis aos parâmetros da procedure que se quer executar. Sua classe de Dados, além disso, pode implementar a interface IDBComponent, o que a obriga a implementar os métodos Incluir, Excluir, Alterar e ObterPorPK, ambos passando como parâmetro um DataSet. O UNIFW adota como boa prática a passagem de parâmetros dos métodos das classe de negócio e dados em forma de DataSets, pois isso evita um problema de quebra de interface das classes toda vez que se necessita mudar os parâmetros de um determinado método. Segue um exemplo de código em VB.NET de uma classe de dados: Public Class Canal : Inherits Unitech.Component.DBComponent : Implements Unitech.UNIFW.Conteudo.DB.ICanal Public Function Inserir(ByVal param As DataSet) As Integer Implements ICanal.Inserir param.tables(0).rows(0)("identificador") = NewNumber Return SGBD.SPExecute("CONTEUDOCanalINS", FillParameters("CONTEUDOCanalINS", param.tables(0).rows(0))) Public Function Alterar(ByVal param As DataSet) As Integer Implements ICanal.Alterar Return SGBD.SPExecute("CONTEUDOCanalUPD", FillParameters("CONTEUDOCanalUPD", param.tables(0).rows(0))) Public Function Excluir(ByVal param As DataSet) As Integer Implements ICanal.Excluir Return SGBD.SPExecute("CONTEUDOCanalDEL", FillParameters("CONTEUDOCanalDEL", param.tables(0).rows(0))) Public Function ObterPorPK(ByVal param As DataSet) As DataSet Implements ICanal.ObterPorPK Return SGBD.SPGetData ("CONTEUDOCanalSELPK", Me.GetType().Name.ToString(), FillParameters("CONTEUDOCanalSELPK", param.tables(0).rows(0))) Public Function ObterTodos() As DataSet Implements ICanal.ObterTodos Return SGBD.SPGetData("CONTEUDOCanalSEL", Me.GetType().Name.ToString()) End Class Pode-se notar a utilização dos métodos SPExecute (execução de INSERTs, UPDATEs, DELETEs) e SPGetData (Execução de SELECTs) existentes no objeto SGBD que facilitam a interação com as stored procedures do banco. O Unifw propõe o uso de Stored Procedures por razões de performance, mas nada impede o desenvolvedor de utilizar queries não compiladas. Os métodos que provêem estes recursos são o Execute e o GetData, com a diferença que passamos como parâmetros para estes dois métodos a declaração SQL completa no lugar do nome da procedure. No método inserir nota-se a utilização da propriedade NewNumber para preencher o campo Identificador da tabela. Lembre-se que as classes Unitech.Data e Unitech.Component facilitam o processo de conexão, execução e obtenção dos dados, mas sua classe de dados poderia ser desenvolvida sem herdar de DBComponent, porém ela teria que implementar os devidos passos de acesso à banco via ADO.NET Implementando utilizando UniComponent O UniComponent foi criado com o objetivo de desempenhar o papel do BSComponent e DBComponent em um só componente além de integrar novos recursos de acessos alternativos a outras origens de dados (sem a utilização do COM+, utilizando DAC). A idéia desse componente é oferecer ao programador as facilidades de desenvolvimento de um projeto em 2 camadas, pois basta o componente de dados e negócio herdar de UniComponent para ter essas características. Pág.9

10 A figura abaixo apresenta a estrutura do componente. Como podemos notar ele possui métodos equivalentes aos existentes no BSComponent e DBComponent, a novidade é o método CreateDatabaseInstance() o qual instância um objeto de acesso a dados referente a um datasource específico. É através da propriedade SiglaDataSource que o UniComponent saberá qual é o datasource específico daquele componente. Exemplo: Public Class OrigemDados() Public Sub New() SiglaDataSource = "UNIFWDAC" Public Function Inserir(ByRef param As DataSet) As Integer Implements IOrigemDados.Inserir Dim RowsAffected As Int32 Dim SGBD As Unitech.Data.IDatabase = CreateDataBaseInstance(SiglaDataSource) RowsAffected = SGBD.SPExecute("UTILOrigemDadosINS", FillParameters("UTILOrigemDadosINS", param.tables(0).rows(0))) Return RowsAffected... End Class No exemplo acima o acesso a base de dados é feito a partir de um objeto instanciado através da interface IDatabase. Essa operação é realizada pelo CreateDataBaseInstance(), o qual é responsável pelo retorno do objeto de acesso a dados referente a origem de dados informada na propriedade SiglaDataSource. Existe uma tabela no banco de dados do UniFw.Net, denominada OrigemDados, nessa tabela existe a referência entre todas origem de dados acessadas pelo framework, e a chave de busca é a sigla dessa origem Implementando utilizando o SQLDatabaseDAC Conforme foi visto no tópico anterior o UniComponent permite que o programador possa utilizar origem de dados diferentes para suas classes de dados / negócios, mas para isso basta informar a SiglaDataSource referente a origem de dados a ser acessada. O SQLDatabaseDAC segue os mesmos padrões do SQLDatabase pois ambos implementam Idatabase, a diferença é que o SQLDatabaseDAC utiliza o componente de acesso a dados DAC (Data Access Component) enquanto que o SQLDatabase faz acesso utilizando o COM+. O componente DAC é uma solução alternativa ao COM+ em relação a gerenciamento de transações, essa alternativa veio no sentido de oferecer melhor desempenho em relação ao COM+. Pág.10

11 O diagrama abaixo apresenta o modelo conceitual do DAC. O diagrama acima demonstra que a partir de uma interface Idata se instancia objetos de acesso a base de dados MSSql, OleDbData e XMLData. Abaixo segue exemplo de uma classe de dados utilizando o UniComponent e referenciando SQLDatabaseDAC. Imports Unitech.Component Imports Unitech.Data Imports DAC Public Class OrigemDados Inherits Unitech.Component.UniComponent Implements IOrigemDados Public Sub New() SiglaDataSource = "UNIFWDAC" Function NewNumber() As Integer Return GetNewNumber(Me.GetType().Name.ToString()) <DAC.TransactionContext(Transaction.Required, Isolation:=Isolation.ReadCommitted)> _ Public Function Inserir(ByRef param As DataSet) As Integer Implements IOrigemDados.Inserir Try Dim RowsAffected As Int32 Dim SGBD As Unitech.Data.IDatabase = CreateDataBaseInstance(SiglaDataSource) RowsAffected = SGBD.SPExecute("UTILOrigemDadosINS", FillParameters("UTILOrigemDadosINS", param.tables(0).rows(0))) TransactionManager.SetComplete() Return RowsAffected Catch ex As Exception TransactionManager.SetAbort() Throw ex End Try <DAC.TransactionContext(Transaction.Supported, Isolation:=Isolation.ReadCommitted)> _ Public Function Alterar(ByRef param As DataSet) As Integer Implements IOrigemDados.Alterar Try Dim RowsAffected As Int32 Dim SGBD As Unitech.Data.IDatabase = CreateDataBaseInstance(SiglaDataSource) RowsAffected = SGBD.SPExecute("UTILOrigemDadosUPD", FillParameters("UTILOrigemDadosUPD", param.tables(0).rows(0))) TransactionManager.SetComplete() Return RowsAffected Catch ex As Exception TransactionManager.SetAbort() Throw ex End Try <DAC.TransactionContext(Transaction.Required, Isolation:=Isolation.ReadCommitted)> _ Pág.11

12 Public Function Excluir(ByRef param As DataSet) As Integer Implements IOrigemDados.Excluir Try Dim RowsAffected As Int32 Dim SGBD As Unitech.Data.IDatabase = CreateDataBaseInstance(SiglaDataSource) SGBD.SPExecute("UTILOrigemDadosDEL", FillParameters("UTILOrigemDadosDEL", param.tables(0).rows(0))) TransactionManager.SetComplete() Return RowsAffected Catch ex As System.Exception TransactionManager.SetAbort() Throw ex End Try <DAC.TransactionContext(Transaction.Supported, Isolation:=Isolation.ReadCommitted)> _ Function ObterPorPK(ByRef DS As DataSet) As DataSet Implements IOrigemDados.ObterPorPK Try Dim dsretorno As DataSet Dim SGBD As Unitech.Data.IDatabase SGBD = CreateDataBaseInstance(SiglaDataSource) dsretorno = SGBD.SPGetData("UTILOrigemDadosSELPK", "OrigemDados", FillParameters("INFRAObtemOrigemDadosPorSigla", DS.Tables(0).Rows(0))) TransactionManager.SetComplete() Return dsretorno Catch ex As System.Exception TransactionManager.SetAbort() Throw ex End Try <DAC.TransactionContext(Transaction.Supported, Isolation:=Isolation.ReadCommitted)> _ Function ObterTodos() As DataSet Implements IOrigemDados.ObterTodos Try Dim dsretorno As DataSet Dim SGBD As Unitech.Data.IDatabase SGBD = CreateDataBaseInstance(SiglaDataSource) dsretorno = SGBD.SPGetData("UTILOrigemDadosSEL", "OrigemDados") TransactionManager.SetComplete() Return dsretorno Catch ex As System.Exception TransactionManager.SetAbort() Throw ex End Try End Class O código acima apresenta a classe de acesso a dados OrigemDados. Esse exemplo se encontra simplificado apresentando somente as implementações de alguns métodos: OrigemDados(), NewNumber(), Inserir() e ObterTodos(). Os outros métodos seguem o mesmo padrão que será explicado a seguir: Imports Unitech.Component Imports Unitech.Data Imports DAC Public Class OrigemDados Inherits Unitech.Component.UniComponent Implements IorigemDados 1.) Todo projeto de acesso a dados deve ter referências a DAC, System, System.Data, System.XML, System.Component, Unitech.Component, Unitech.Data.Interfaces, classe de negócio (nesse caso Unitech.UNIFW.Útil). É necessário também que a minha classe herde de UniComponent e implemente uma interface discriminada no meu projeto de classe de negócio (nesse caso IorigemDados). Pág.12

13 Public Sub New() SiglaDataSource = "UNIFWDAC" Function NewNumber() As Integer Return GetNewNumber(Me.GetType().Name.ToString()) 2.) O construtor dessa classe deve especificar a propriedade SiglaDataSource. O método NewNumber(), antes já implementado em DBComponent, nada mais é que o GetNewNumber() recebendo o nome da classe como parâmetro. <DAC.TransactionContext(Transaction.Required, Isolation:=Isolation.ReadCommitted)> _ Public Function Inserir(ByRef param As DataSet) As Integer Implements IOrigemDados.Inserir Try... 3.) Em todo método que realizará acesso a base de dados deverá ter o atributo <DAC.TransactionContext>, esse atributo é responsável pela configuração do tipo de transação que será realizada. Os parâmetros que devem ser especificados e o tipo de transação e o nível de isolamento da mesma (isolation level). A assinatura do método deve ser especificada na interface a qual a classe implementa. E o tratamento de erro (Try...Catch) deve ser iniciado logo nas primeiras linhas para identificação de possíveis falhas. Dim RowsAffected As Int32 Dim SGBD As Unitech.Data.IDatabase = CreateDataBaseInstance() RowsAffected = SGBD.SPExecute("UTILOrigemDadosINS", FillParameters("UTILOrigemDadosINS", param.tables(0).rows(0))) TransactionManager.SetComplete() Return RowsAffected 4.) O método TransactionManager.SetComplete() é responsável pelo Commit da transação corrente, sem esse método o DAC não poderá validar a transação efetuada. É importante que esse método fique após a execução da operação, para que o DAC avalie se ocorreu ou não uma exceção (exception) e possa validar a operação efetuada Auditoria O UNIFW possui recursos de Auditoria que possibilitam que operações realizadas pelo usuário possam ser auditadas mais adiante. A partir do cadastramento de Trilhas, Alvos e Escopos(ver Guia do Administrador), o UniFW automaticamente cria registros de operação(tabela OperacaoAuditoria) com as seguintes informações: Identificador: chave primária. Número que identifica unicamente um registro de operação criado pelo UniFW. IdenTrilhaAuditoria: identificador da trilha de auditoria que enquadrou a operação realizada em seu escopo e alvo, provocando a sua criação. IdenUsuario: Identificador do Usuário que está solicitando a execução da operação. IdenTela: identificador da Tela utilizada para solicitação da operação. IdenFuncao: identificador da função associada com a operação solicitada. Data: data em que a operação foi solicitada. EnderecoRemoto: Endereço IP, ou Host, da máquina cliente usada para solicitar a operação. SiglaDominioUsuario: sigla do domínio do usuário que está solicitando a execução da operação. LoginUsuario: login do usuário que está solicitando a execução da operação. NomeUsuario: nome do usuário que está solicitando a execução da operação. Interface: definição da interface utilizada para executar a operação. Usado o padrão SiglaAplicacao/SiglaModulo/NomeTela Função: nome da função que está relacionada com a operação solicitada. Ex.: Cadastrar Funcionário Pág.13

14 Além dessas informações, se faz necessária a possibilidade de registrar quais as modificações realizadas nos registros(tabelas) das aplicações. Ou seja, que registros foram modificados/excluídos/alterados durante a execução de uma determinada operação. No UniFW, para realizar os registros de alteração/exclusão/inclusão de registros em banco de dados, cada tabela a ser controlada deverá possui uma outra tabela de auditoria que armazene as modificações feitas na mesma. Por exemplo, para uma tabela FUNCIONARIOS deverá existir uma outra tabela de auditoria chamada AUDIT_FUNCIONARIOS com a mesma estrutura básica de campos da primeira. Sempre que uma alteração/exclusão/inclusão for realizada na tabela FUNCIONARIOS, um trigger na mesma deverá inserir um novo registro na tabela AUDIT_FUNCIONARIO para registrar os dados alterados/excluídos/incluídos. Como dito anteriormente, a tabela de auditoria possui a mesma estrutura básica de campos de sua tabela referência. Porém, alguns campos adicionais são necessários na mesma: IdenAuditoria: campo IDENTITY que deverá ser a chave primária da tabela de auditoria. IdenOperacaoAuditoria: campo que armazenará o identificador da operação de auditoria criada pelo UniFW e relacionada com a alteração de dados que está sendo feita. IndicadorExclusao: campo que indica se é uma operação de exclusão de registro=>valor 1. Segue abaixo um script exemplificando a criação de uma tabela de auditoria: CREATE TABLE [NomeTabelaAuditoria] ( [IdenAuditoria] [int] IDENTITY (1, 1) NOT NULL, [IdenOperacaoAuditoria] [int] NOT NULL, [IndicadorExclusao] [bit] NOT NULL, [Campo1] [int] NULL, [Campo2] [varchar] (20), [Campo3] [varchar] (50), [Campo4] [varchar] (150) ) ON [PRIMARY] GO Onde [Campo1], [Campo2], [Campo3] e [Campo4] são os campos da tabela de dados referenciada(ex.: FUNCIONARIOS) e que armazenarão os dados da mesma na tabela de auditoria(ex.: AUDIT_FUNCIONARIOS). Por fim o desenvolvedor deverá criar uma trigger para a tabela de referência desejada. Segue um exemplo: CREATE TRIGGER trnometabelaauditoria ON NomeTabela FOR INSERT, UPDATE, DELETE AS INT exec OUTPUT IS NOT NULL BEGIN IF EXISTS(SELECT * FROM inserted) INSERT NomeTabelaAuditoria (IdenOperacaoAuditoria, IndicadorExclusao, campo1, campo2, campo3, campo4...) 0, d.* FROM inserted d ELSE INSERT NomeTabelaAuditoria (IdenOperacaoAuditoria, IndicadorExclusao, campo1, campo2, campo3, campo4...) 1, d.* FROM deleted d END A procedure INFRAObtemIdOperacaoAuditoria busca o valor do Identificador da operação e grava na variável passada como parâmetro de OUTPUT, no exemplo declarada como INT. O valor do identificador da operação corrente é responsabildiade do UniFW.. Existem casos em que oeprações de alteração em banco de dados são realizadas através de apliações não implementadas através do UniFW. Por exemlpo, pode-se,através do QueryAnalyzer, efetuar um INSERT em uma determinada tabela do sistema. Neste caso, a procedure INFRAObtemIdOperacaoAuditoria sempre retornará Null através de seu parâmetro. Isso se deve ao fato de a operação não ter passado pelo controle do UniFW para ser realizada, logo a mesma não foi registrada. Pág.14

15 Para que o registro de operação de auditoria seja possível nesses casos, se faz necessário verificar o retorno da procedure INFRAObtemIdOperacaoAuditoria no trigger. Caso o mesmo seja Null, dois são os significados possíveis: 1. Apesar de ter passado pelo controle do UniFW, a operação solicitada não se enquadrou em nenhuma trilha cadastrada no UniFW. Logo, para o UniFW não é necessário registrar a operação de auditoria. 2. A operação realizada não passou pelo controle do UniFW, logo o mesmo não pôde verificar se um registro de auditoria deveria ser criado. Para ambas as situações, o desenvolvedor do trigger de auditoria deverá identificar, a partir de critérios específicos da sua aplicação, a necessidade de efetuar os registros de auditoria. Caso seja identificado que existe a necessidade de registrar a operação de auditoria, tendo a procedure INFRAObtemIdOperacaoAuditoria retornado Null, poderá ser utilizada uma outra procedure disponibilizada pelo UniFW, denominada INFRAObtemIdOperacaoExternaAuditoria. Esta procedure tem como objetivo criar um registro de operação a partir de informações passadas pelo desenvolvedor e retornar para o identificador dado à mesma. Abaixo segue um exemplo com a tabela de FUNCIONARIOS de trigger de auditoria que se utiliza dessa procedure(destaque em vermelho): CREATE TRIGGER trauditoriafuncionarios ON Funcionarios FOR INSERT, UPDATE, DELETE AS INT exec OUTPUT -- Verifica se existe uma operação auditoria criada pela UniFW.NET IS NULL BEGIN -- Caso essa operação não exista, decide-se pela criação manual de uma operação auditoria. exec OUTPUT, null, null, null, null, 'IPHostCliente', 'DOMUSR', 'LoginUSR', 'Nome do usuário', 'Query Analyzer', 'Inclusão de Funcionario' END -- Verifica qual é o tipo da operação IF EXISTS(SELECT * FROM inserted) -- Realiza a auditoria para os casos de inserção e alteração INSERT Audit_Funcionario (IdenOperacaoAuditoria, IndicadorExclusao, Matricula, Nome, Cargo, Salario) 0, d.* FROM inserted d ELSE -- Realiza a auditoria para os casos de exclusão INSERT Audit_Funcionario (IdenOperacaoAuditoria, IndicadorExclusao, Matricula, Nome, Cargo, Salario) 1, d.* FROM deleted d O trecho em vermelho exemplifica o uso da procedure INFRAObtemIdOperacaoExternaAuditoria responsável pela criação de uma operação auditoria a partir de parâmetros passados pelo desenvolvedor. Seus parâmetros são: IdenOperacao: (obrigatório) Parâmetro OUTPUT que retornará o identificador dado à nova operação criada. IdenTrilhaAuditoria: Identificador da trilha de auditoria cadastrada no UniFW responsável pela realização do registro de operação. Null quando não identificado. IdenUsuario: Identificador do usuário cadastrado no UniFW que solicitou a execução da operação. Null quando não identificado. IdenTela: Identificador da tela da aplicação cadastrada no UniFW que foi utilizada para executar a operação. Null quando não identificada. IdenFunção: Identificador da função cadastrada no UniFW que representa a operação executada. Null quando não identificada. Pág.15

16 EnderecoRemoto: HOST/IP da máquina cliente utilizada para executar a operação. Null quando não possível a identificação. SiglaDominioUsuario: (obrigatório) Sigla do domínio do usuário que solicitou a execução da operação. Pode não ser um domínio cadastrado no UniFW, mas poderá ser usado como critério de busca no relatório de auditoria disponibilizado pelo UniFW. LoginUsuario: (obrigatório) Login do usuário que solicitou a execução da operação. Pode não ser um login de usuário cadastrado no UniFW, mas poderá ser usado como critério de busca no relatório de auditoria disponibilizada pelo UniFW. NomeUsuario: (obrigatório) Nome do usuário que solicitou a execução da operação. Interface: (obrigatório) Nome ou descrição da interface usada para executar a operação. Ex.: QueryAnalyser ou AplicacaoX/ModuloY/TelaZ. Função: (obrigatório) Nome da função que está sendo executada. Ex.: Cadastro de clientes, Aprovação de Crédito. Não necessita ser uma das funções cadastradas no UniFW, mas poderá ser usado como critério de busca no relatório de auditoria disponibilizada pelo UniFW Registro de Atributo de Auditoria Em certas situações, a utilização de triggers não é suficiente para a auditoria de informações que foram manipuladas por uma operação realizada na aplicação. Por exemplo, como nenhum trigger é executado em operações de consulta, não se tinha como saber qual o número do Processo Administrativo consultado por um determinado usuário em um determinado dia, pois para consultar os dados de um Processo Administrativo apenas comandos de SELECT foram executados na base de dados. Como solução para esse problema o UniFW possibilita fazer registros de informações relacionadas com a operação de auditoria corrente em tempo de execução mesmo sem a execução de triggers. Ou seja, além das informações já existentes sobre uma operação auditoria (ex.: Data, LoginUsuario, Função etc) é possível definir outros atributos para as entidades e definir seus valores em tempo de execução do sistema. Depois de registrados, esses valores podem ser consultados através da Consulta de Auditoria do UniFW na tela de detalhamento(ver Guia do Administrador) como um atributo qualquer de uma entidade. Para se registrar um novo atributo de auditoria, utiliza-se do método RegistraAtributo da classse UNIFW.Auditoria.BS.Auditoria. Este método recebe como parâmetros duas Strings: o nome do novo atributo a ser definido e o valor do mesmo. Vale ressaltar que a nomenclatura para nomes de atributos deve ter o seguinte padrão: EntidadeAuditoria.NomeAtributo Onde: EntidadeAuditoria é o nome da entidade de auditoria cadastrada no UniFW(ver guia do Adminsitrador) relacionada com o novo atributo definido. NomeAtributo é o nome do novo atributo que receberá um valor. Esse atributo também deverá estar cadastrado no UniFW(ver guia do Administrador) como um atributo da entidade. Abaixo, segue um exemplo de código que registra um novo atributo na operação de auditoria corrente através da classe UNIFW.Auditoria.BS.Auditoria: Dim Audita As Unitech.UNIFW.Auditoria.BS.Auditoria = New Unitech.UNIFW.Auditoria.BS.Auditoria() Audita.RegistrarAtributo("Processo.numero", 1350 ) No exemplo acima, é inserido um novo atributo de nome numero na entidade de nome Processo com o valor Se não existir operação corrente, nada será registrado. Na tela de relatório de auditoria do UniFW(ver Guia do Administrador) o mesmo poderá ser utilizado como critério de busca ou como informação a ser consultada. Pág.16

17 Criação de uma nova Operação Auditoria Existirão alguns casos na auditoria de consulta (vide tópico Registro de Atributo Auditoria) onde será necessária a criação de uma nova operação auditoria. Esses casos geralmente envolvem situações de postback as quais recuperam a operação de auditoria anterior não possibilitando a criação de mais de um atributo de auditoria com o mesmo nome. Um caso de exemplo para essa funcionalidade são telas de consulta as quais possuem variáveis de filtro a serem auditadas, dessa forma para evitar que esses atributos auditados sejam sobrescritos a cada postback utiliza-se o recurso de criação de uma nova operação auditoria. Para realização dessa funcionalidade temos o método CriarNovaOperacaoAuditoria da classe Auditoria referente ao namespace Unitech.UNIFW.Auditoria.BS, abaixo temos um exemplo de como utilizar o recurso: Dim Audita As Unitech.UNIFW.Auditoria.BS.Auditoria = New Unitech.UNIFW.Auditoria.BS.Auditoria() Audita.CriarNovaOperacaoAuditoria() 3. Implementando a camada de Negócio 3.1. Projeto da camada de negócio A camada de negócio nada mais é que a criação de sua classe de regras de negócio em um projeto do Visual Studio.NET. Esse projeto é referenciado da seguinte forma NOME_APLICACAO.NOME_MÓDULO.BS, sendo que nesse projeto conterá todas as classes de negócio de um certo módulo. As referências relacionadas aos projetos de camadas de negócio são as seguintes: - System - System.Data - System.EnterpriseServices - System.XML - Unitech.Component - Unitech.Exception - NOME_APLICACAO.NOME_MÓDULO.DB 3.2. A camada de negócio A camada de negócio normalmente é composta por componentes que possuem o objetivo de centralizar a implementação das lógicas que controlam o comportamento da aplicação a ser desenvolvida. O Unifw fornece diversas estruturas aos componentes desta camada de modo a retirar do desenvolvedor a responsabilidade de implementar as rotinas mais freqüentemente utilizadas. Tal como a camada de dados, o Unifw possui uma classe BSComponent que traz facilidades na implementação de objetos de negócios. As seguintes propriedades e métodos são implementados por esta classe: protected DBComponent DataComponent{...} Retorna uma Instancia do tipo Unitech.Component.DBComponent que representa o objeto de dados vinculado à classe de negócios em desenvolvimento. protected void AddColumn(DataTable Table, string FieldName, System.Type SystemType) { } Adiciona uma coluna à Table passada como parâmetro. Possui uma sobrecarga onde passa-se também o caption da coluna a ser exibido por um UniDataGrid, por exemplo. Sua classe de negócios, além disso, pode implementar a interface IBSComponent, o que a obriga a implementar os métodos Incluir, Excluir, Alterar e ObterPorPK, ambos passando como parâmetro um DataSet. Segue um exemplo de código em VB.NET de uma classe de dados: Pág.17

18 Imports System.Data Imports System.EnterpriseServices Imports Unitech.Exception Imports Unitech.Component Imports Unitech.UNIFW.Conteudo.BS <Transaction(), EventTrackingEnabled()> _ Public Class Canal : Inherits BSComponent : Implements ICanal Private Const CTX_CLASSNAME As String = "Canal" Private Enum TipoOperacao Inserir Alterar Excluir End Enum Private ReadOnly Property objicanaldb() As Unitech.UNIFW.Conteudo.DB.ICanal Get Return CType(DataComponent, Unitech.UNIFW.Conteudo.DB.ICanal) End Get End Property Private Sub Validar(ByVal CanalRow As DataRow, ByVal operacao As TipoOperacao) If (operacao = TipoOperacao.Excluir) Or (operacao = TipoOperacao.Alterar) Then If (CanalRow("Identificador") Is DBNull.Value) Then Throw New EnvironmentException("ErrIdentificadorNulo") End If End If If (operacao = TipoOperacao.Inserir) Or (operacao = TipoOperacao.Alterar) Then If (CanalRow("Nome") Is DBNull.Value) Or (CStr(CanalRow("Nome")) = String.Empty) Then Throw New EnvironmentException("ErrNomeNulo") End If If (CanalRow("Descricao") Is DBNull.Value) Or (CStr(CanalRow("Descricao")) = String.Empty) Then Throw New EnvironmentException("ErrDescricaoNula") End If End If Private Function FormatDisplay(ByVal DS As DataSet, ByVal TableName As String) As DataSet DS.Tables(TableName).Columns("Descricao").Caption = "Descrição" FormatDisplay = DS Public ReadOnly Property DataStructure() As DataSet <AutoComplete()> Get Dim DT As DataTable = New DataTable(CTX_CLASSNAME) AddColumn(DT, "Identificador", System.Type.GetType("System.Int32")) AddColumn(DT, "Nome", System.Type.GetType("System.String")) AddColumn(DT, "Descricao", System.Type.GetType("System.String")) Dim DS As DataSet = New DataSet() DS.Tables.Add(DT) DS = FormatDisplay(DS, CTX_CLASSNAME) DS.Tables(CTX_CLASSNAME).Rows.Add(DT.NewRow()) DataStructure = DS End Get End Property <AutoComplete()> Public Function Inserir(ByVal dscanal As DataSet) As Integer Implements ICanal.Inserir Validar(dsCanal.Tables(0).Rows(0), TipoOperacao.Inserir) Return objicanaldb.inserir(dscanal) <AutoComplete()> Public Function Alterar(ByVal dscanal As DataSet) As Integer Implements ICanal.Alterar Validar(dsCanal.Tables(0).Rows(0), TipoOperacao.Alterar) Return objicanaldb.alterar(dscanal) <AutoComplete()> Public Function Excluir(ByVal dscanal As DataSet) As Integer Implements ICanal.Excluir Validar(dsCanal.Tables(0).Rows(0), TipoOperacao.Excluir) Return objicanaldb.excluir(dscanal) <AutoComplete()> Public Function ObterPorPK(ByVal dscanal As DataSet) As DataSet Implements ICanal.ObterPorPK Return objicanaldb.obterporpk(dscanal) <AutoComplete()> Public Function ObterTodos() As DataSet Implements ICanal.ObterTodos Return FormatDisplay(objICanalDB.ObterTodos(), CTX_CLASSNAME) End Class Pág.18

19 Note que a Propriedade objcanaldb retorna um objeto do tipo Unitech.UNIFW.Conteúdo.DB.ICanal, que nada mais é do que uma conversão do DataComponente para a interface Unitech.UNIFW.Conteúdo.DB.ICanal, a fim de obter uma forma de utilizar os seus métodos. A interface ICanal (da classe de dados) teria um código parecido com este aqui: Imports System.Data Public Interface ICanal : Inherits IDBComponent 'As funcionalidades básicas (Inserir, Alterar, Excluir e ObterPorPK) 'são herdadas de IDBComponent. Funcionalidades adicionais (como por 'exemplo a ObterTodos) devem ser adicionadas aqui. Function ObterTodos() As DataSet End Interface Uma propriedade importante, mas não obrigatória, a ser criada na sua classe de negócio é o DataStructure, conforme mencionado na seção de implementação de classes de dados, o Unifw propõe a utilização de Datasets como parâmetros de métodos nas classes de negócio e de dados. Com esta propriedade, o desenvolvedor formata uma estrutura para os DataSets que serão passados como parâmetros da camada de apresentação para a camada de negócio e desta para a camada de dados. O método FormatDisplay deve ser utilizado para definir propriedades de visualização das colunas da tabela de um determinado DataSet (inclusive seu DataStructure). Neste exemplo está sendo definido o Caption para a coluna Descricao da tabela Canal, para que esta possa apresentar-se na sua grafia correta: Descrição. Pode-se utilizar também a formatação de campos numéricos, data, ou moeda, ou ainda esconder determinadas colunas para que não sejam visualizadas através do UniDataGrid. Pág.19

20 3.3. Implementando com o UniComponent Conforme já apresentado em 2.3. Implementando usando UniComponent o UniComponent é uma solução que integrou recursos do DBComponent e BSComponent, além de integrar novos recursos de acessos alternativos a outras origens de dados (sem a utilização do COM+, utilizando SQLDatabaseDAC). Segue abaixo um exemplo de código de uma classe de negócio utilizando UniComponent. Nesse exemplo a classe utiliza o também do DAC, mas nossa abordagem será sobre as características do UniComponent. Imports Unitech.UNIFW.Util Imports DAC Public Class OrigemDados Inherits Unitech.Component.UniComponent Private Const CTX_CLASSNAME As String = "OrigemDados" Public ReadOnly Property DataStructure() As DataSet Get Dim DT As DataTable = New DataTable(CTX_CLASSNAME) AddColumn(DT, "Sigla", System.Type.GetType("System.String")) AddColumn(DT, "Descricao", System.Type.GetType("System.String")) AddColumn(DT, "IdenTipoSGBD", System.Type.GetType("System.Int32")) AddColumn(DT, "ConnectionString", System.Type.GetType("System.String")) Dim DS As DataSet = New DataSet() DS.Tables.Add(DT) DS.Tables(CTX_CLASSNAME).Rows.Add(DT.NewRow()) DataStructure = DS End Get End Property Private Function CriarOrigemDadosDB() As IOrigemDados Dim Factory As IDataFactory Factory = DataFactory.CriarFactory() Return Factory.CriarOrigemDados() + Private Sub Validar(ByVal DS As DataSet, ByVal Operacao As String) <DAC.TransactionContext(Transaction.Supported, Isolation:=Isolation.ReadCommitted)> _ Public Function ObterPorSigla(ByVal ds As DataSet) As DataSet Try Dim dsretorno As DataSet Dim OrigemDadosDB As IOrigemDados = CriarOrigemDadosDB() dsretorno = OrigemDadosDB.ObterPorPK(ds) TransactionManager.SetComplete() Return dsretorno Catch ex As System.Exception TransactionManager.SetAbort() Throw ex End Try <DAC.TransactionContext(Transaction.Supported, Isolation:=Isolation.ReadCommitted)> _ Public Function ObterTodos() As DataSet Try Dim dsretorno As DataSet Dim OrigemDadosDB As IOrigemDados = CriarOrigemDadosDB() dsretorno = OrigemDadosDB.ObterTodos() TransactionManager.SetComplete() Return dsretorno Catch ex As System.Exception TransactionManager.SetAbort() Throw ex End Try Pág.20

Guia do Programador. Versão 1.6.7 13/5/2005

Guia do Programador. Versão 1.6.7 13/5/2005 Versão 1.6.7 13/5/2005 Guia do Programador Tecnologia de Informação http://www.unitech.com.br Av. ACM, Ed. Fernandez Plaza, 22º andar Cidadela, Salvador - BA CEP: 40.280-630 Tel: (71) 350-9777 FAX: (71)

Leia mais

SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela

SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela Certamente você já ouviu falar muito sobre triggers. Mas o quê são triggers? Quando e como utilizá-las?

Leia mais

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

PROCEDIMENTOS ARMAZENADOS (Stored Procedures) PROCEDIMENTOS ARMAZENADOS (Stored Procedures) 1. Introdução Stored Procedure é um conjunto de comandos, ao qual é atribuído um nome. Este conjunto fica armazenado no Banco de Dados e pode ser chamado a

Leia mais

2008.1. A linguagem SQL

2008.1. A linguagem SQL SQL 2008.1 A linguagem SQL SQL - Structured Query Language. Foi definida nos laboratórios de pesquisa da IBM em San Jose, California, em 1974. Teve seus fundamentos no modelo relacional Sua primeira versão

Leia mais

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Faculdade Pitágoras Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL A linguagem SQL é responsável por garantir um bom nível

Leia mais

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL Faculdade Pitágoras Curso Superior de Tecnologia: Banco de Dados Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL A linguagem SQL é responsável por garantir um bom nível de independência do

Leia mais

Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br Programação com acesso a BD Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br 1 Modelos de Dados, Esquemas e Instâncias 2 Modelos de Dados, Esquemas e Instâncias Modelo de dados: Conjunto de conceitos

Leia mais

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger A tecnologia de banco de dados permite persistir dados de forma a compartilha-los com varias aplicações. Aplicação 1 aplicação 2 aplicação 3 SGDB Banco

Leia mais

Auditoria de sistemas Deixe que seu banco de dados faça o trabalho por você

Auditoria de sistemas Deixe que seu banco de dados faça o trabalho por você Auditoria de sistemas Deixe que seu banco de dados faça o trabalho por você por Cristóferson Guimarães Magalhães Bueno e Odilon Corrêa da Silva 1 O objetivo deste artigo é demonstrar como criar um sistema

Leia mais

Integridade dos Dados

Integridade dos Dados 1 Integridade dos Dados Integridade dos Dados Melissa Lemos melissa@inf.puc-rio.br A integridade dos dados é feita através de restrições, que são condições obrigatórias impostas pelo modelo. Restrições

Leia mais

Visual Basic.NET. Universidade Federal da Bahia. Departamento de Ciência da Computação. Disciplina MATA76 Linguagens para Aplicação comercial.

Visual Basic.NET. Universidade Federal da Bahia. Departamento de Ciência da Computação. Disciplina MATA76 Linguagens para Aplicação comercial. Universidade Federal da Bahia Departamento de Ciência da Computação Disciplina MATA76 Linguagens para Aplicação comercial. Aluno: Nailton Gonzaga dos Santos. Visual Basic.NET Salvador, setembro de 2008.

Leia mais

Universidade Federal de Viçosa CPD - Central de Processamento de Dados Divisão de Desenvolvimento de Sistemas

Universidade Federal de Viçosa CPD - Central de Processamento de Dados Divisão de Desenvolvimento de Sistemas Universidade Federal de Viçosa CPD - Central de Processamento de Dados Divisão de Desenvolvimento de Sistemas Manual de padrões e convenções para desenvolvimento de sistemas PHP Versão Conteúdo 1.

Leia mais

Histórico de revisões

Histórico de revisões Apostila 3 Histórico de revisões Data Versão Descrição Autor 30/09/2011 1.0 Criação da primeira versão HEngholmJr CONTEÚDO Exclusão de registros Consultas por Dados de Resumo Group by / Having Funções

Leia mais

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito)

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito) 8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito) Nos itens anteriores vimos transações do tipo explícitas, ou seja, aquelas que iniciam com BEGIN TRANSACTION. As outras

Leia mais

DESENVOLVIMENTO DE SOFTWARE

DESENVOLVIMENTO DE SOFTWARE VARIAÁ VEL Antes de iniciarmos os comandos referentes a Banco de Dados, precisamos de uma breve descrição técnica sobre Variáveis que serão uma constante em programação seja qual for sua forma de leitura.

Leia mais

ADO.NET - Roteiro básico e Boas Práticas

ADO.NET - Roteiro básico e Boas Práticas ADO.NET - Roteiro básico e Boas Práticas Confuso com tantos conceitos novos, com tantas siglas e acrósticos? Qual provedor usar? Devo usar DataSet ou DataReader? Se essas e outras dúvidas te atormentam,

Leia mais

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO ESCOLA DE ENGENHARIA DEPARTAMENTO DE ELETRÔNICA. Sistema de Gerenciamento Eletrônico de Documentos

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO ESCOLA DE ENGENHARIA DEPARTAMENTO DE ELETRÔNICA. Sistema de Gerenciamento Eletrônico de Documentos UNIVERSIDADE FEDERAL DO RIO DE JANEIRO ESCOLA DE ENGENHARIA DEPARTAMENTO DE ELETRÔNICA Sistema de Gerenciamento Eletrônico de Documentos Autor: Evandro Bastos Tavares Orientador: Antônio Claudio Gomez

Leia mais

ARQUITETURA SISGRAD. Manual de Utilização. Versão: 2.0. Criação: 05 de julho de 2007 Autor: André Penteado

ARQUITETURA SISGRAD. Manual de Utilização. Versão: 2.0. Criação: 05 de julho de 2007 Autor: André Penteado ARQUITETURA SISGRAD Manual de Utilização Versão: 2.0 Criação: 05 de julho de 2007 Autor: André Penteado Última Revisão: 09 de outubro de 2009 Autor: Alessandro Moraes Controle Acadêmico - Arquitetura SISGRAD

Leia mais

AULA 8 CRIANDO UMA CLASSE EM PHP INTERAGINDO COM BANCO DE DADOS - COM RELACIONAMENTO ENTRE TABELAS

AULA 8 CRIANDO UMA CLASSE EM PHP INTERAGINDO COM BANCO DE DADOS - COM RELACIONAMENTO ENTRE TABELAS AULA 8 CRIANDO UMA CLASSE EM PHP INTERAGINDO COM BANCO DE DADOS - COM RELACIONAMENTO ENTRE TABELAS Na grande maioria dos sistemas, faz-se necessário utilizar informações que estão armazenadas em uma determinada

Leia mais

Autor: Ricardo Francisco Minzé Júnior - ricardominze@yahoo.com.br Desenvolvendo aplicações em camadas com PHP 5.

Autor: Ricardo Francisco Minzé Júnior - ricardominze@yahoo.com.br Desenvolvendo aplicações em camadas com PHP 5. Desenvolvendo aplicações em camadas com PHP 5. Talvez a primeira vista você ache estranha a palavra Camada em programação, mas o que vem a ser Camada? Segundo o dicionário: Camada 1 - Qualquer matéria

Leia mais

SISTEMA TYR DIAGRAMAS DE CLASSE E SEQUÊNCIA Empresa: Academia Universitária

SISTEMA TYR DIAGRAMAS DE CLASSE E SEQUÊNCIA Empresa: Academia Universitária SISTEMA TYR DIAGRAMAS DE CLASSE E SEQUÊNCIA Empresa: Academia Universitária Cascavel Novembro de 2009 Pedro Patitucci Finamore Daniel Bordignon Cassanelli Marco Antonio da Rosa DIAGRAMAS DE CLASSE E SEQUÊNCIA

Leia mais

4 O Workflow e a Máquina de Regras

4 O Workflow e a Máquina de Regras 4 O Workflow e a Máquina de Regras O objetivo do workflow e da máquina de regras é definir um conjunto de passos e regras configuráveis. Ao longo de sua execução, um usuário consegue simplificar o seu

Leia mais

INTRODUÇÃO. No entanto, o que pode ser considerado um produto (resultado) da criação de BDs?

INTRODUÇÃO. No entanto, o que pode ser considerado um produto (resultado) da criação de BDs? BANCO DE DADOS Universidade do Estado de Santa Catarina Centro de Ciências Tecnológicas Departamento de Ciência da Computação Prof. Alexandre Veloso de Matos alexandre.matos@udesc.br INTRODUÇÃO Um Banco

Leia mais

Aula Extra Conexão ODBC para aplicações Delphi 7 que usam SQL Server 2005

Aula Extra Conexão ODBC para aplicações Delphi 7 que usam SQL Server 2005 Nome Número: Série Aula Extra Conexão ODBC para aplicações Delphi 7 que usam SQL Server 2005 Proposta do projeto: Competências: Compreender a orientação a objetos e arquitetura cliente-servidor, aplicando-as

Leia mais

trigger insert, delete, update

trigger insert, delete, update 1 Um trigger é um conjunto de instruções SQL armazenadas no catalogo da BD Pertence a um grupo de stored programs do MySQL Executado quando um evento associado com uma tabela acontece: insert, delete,

Leia mais

Tutorial - Programando com o MIOLO

Tutorial - Programando com o MIOLO Tutorial - Programando com o MIOLO Conceitos Básicos Antes de iniciar a programação com o Miolo é fundamental compreender alguns conceitos básicos: - Uma aplicação no Miolo é constituída de um ou mais

Leia mais

Então vamos ao que interessa. 1. Introdução

Então vamos ao que interessa. 1. Introdução Tentarei ser o mais genérico possível. Nos exemplos irei utilizar ASP.Net 2.0 e acesso a dados através do ADO.NET, mas pode ter certeza que para outros casos a idéia não irá mudar muito, seja com LINQ,

Leia mais

BANCO DE DADOS E BUSINESS INTELIGENCE. C/H: 20 horas (20/02, 25/02, 27/02, 04/03, 06/03)

BANCO DE DADOS E BUSINESS INTELIGENCE. C/H: 20 horas (20/02, 25/02, 27/02, 04/03, 06/03) MBA em Gestão de TI MÓDULO: BANCO DE DADOS E BUSINESS INTELIGENCE C/H: 20 horas (20/02, 25/02, 27/02, 04/03, 06/03) PROFESSOR: Edison Andrade Martins Morais prof@edison.eti.br http://www.edison.eti.br

Leia mais

Boas Práticas de Desenvolvimento Seguro

Boas Práticas de Desenvolvimento Seguro Boas Práticas de Desenvolvimento Seguro Julho / 2.012 Histórico de Revisões Data Versão Descrição Autor 29/07/2012 1.0 Versão inicial Ricardo Kiyoshi Página 2 de 11 Conteúdo 1. SEGURANÇA DA INFORMAÇÃO

Leia mais

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 11-1. INTRODUÇÃO TRIGGERS (GATILHOS OU AUTOMATISMOS) Desenvolver uma aplicação para gerenciar os dados significa criar uma aplicação que faça o controle sobre todo ambiente desde a interface, passando

Leia mais

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza ROTEIRO Introdução App de exemplo Implementação do exemplo Testes realizados

Leia mais

Projeto de Banco de Dados

Projeto de Banco de Dados Projeto de Banco de Dados Prof. Marcelo Siedler Objetivos do documento: Apresentar os conceitos de stored procedutes e funções. Exercícios. Referência: http://dev.mysql.com/doc/refman/4.1/pt/stored-procedures.html

Leia mais

Programação para Android. Aula 08: Persistência de dados SQL

Programação para Android. Aula 08: Persistência de dados SQL Programação para Android Aula 08: Persistência de dados SQL Persistência de dados Na maioria das aplicações precisamos ter algum tipo de persistência de dados. Para guardar informações de forma persistente

Leia mais

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza ROTEIRO Introdução App de exemplo Implementação do exemplo Testes realizados

Leia mais

Bool setcookie (string nome [, string valor [, int validade [, string caminho [, string dominio [, int seguro]]]]] )

Bool setcookie (string nome [, string valor [, int validade [, string caminho [, string dominio [, int seguro]]]]] ) Disciplina: Tópicos Especiais em TI PHP Este material foi produzido com base nos livros e documentos citados abaixo, que possuem direitos autorais sobre o conteúdo. Favor adquiri-los para dar continuidade

Leia mais

Introdução ao ASP.NET

Introdução ao ASP.NET Introdução ao ASP.NET Miguel Isidoro Agenda ASP ASP.NET Server Controls Separação de Código e Apresentação Acesso a Dados Web Services Aplicações Web ASP.NET 1 ASP Razões do Sucesso Modelo de programação

Leia mais

FAPLAN - Faculdade Anhanguera Passo Fundo Gestão da Tecnologia da Informação Banco de Dados II Prof. Eder Pazinatto Stored Procedures Procedimento armazenados dentro do banco de dados Um Stored Procedure

Leia mais

Sumário. Capítulo 1 O que é o PHP?... 19. Capítulo 2 Instalação do PHP... 23. Capítulo 3 Noções básicas de programação... 25

Sumário. Capítulo 1 O que é o PHP?... 19. Capítulo 2 Instalação do PHP... 23. Capítulo 3 Noções básicas de programação... 25 9 Sobre o autor... 8 Introdução... 15 Capítulo 1 O que é o PHP?... 19 Características do PHP...20 Gratuito e com código aberto...20 Embutido no HTML...20 Baseado no servidor...21 Bancos de dados...22 Portabilidade...22

Leia mais

PHP INTEGRAÇÃO COM MYSQL PARTE 1

PHP INTEGRAÇÃO COM MYSQL PARTE 1 INTRODUÇÃO PHP INTEGRAÇÃO COM MYSQL PARTE 1 Leonardo Pereira leonardo@estudandoti.com.br Facebook: leongamerti http://www.estudandoti.com.br Informações que precisam ser manipuladas com mais segurança

Leia mais

MANUAL AGENDADOR DE TAREFAS LOGIX

MANUAL AGENDADOR DE TAREFAS LOGIX Outubro 2011 rev. 01 MANUAL AGENDADOR DE TAREFAS LOGIX Elaboração: Rubens Dos Santos Filho Framework rubens.santos@totvs.com.br Objetivo Este documento tem como objetivo relatar a funcionalidade de agendamento

Leia mais

Introdução ao SQL. O que é SQL?

Introdução ao SQL. O que é SQL? Introdução ao SQL 1 O que é SQL? Inicialmente chamada de Sequel, SQL (Structured Query Language), é a linguagem padrão utilizada para comunicar-se com um banco de dados relacional. A versão original foi

Leia mais

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES II PROFESSOR RAFAEL BARRETO

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES II PROFESSOR RAFAEL BARRETO ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES II PROFESSOR RAFAEL BARRETO DELPHI CRIANDO UMA AUTENTICAÇÃO DE USUÁRIO UTILIZANDO O COMPONENTE QUERY A autenticação de usuários serve para

Leia mais

2008.1 SQL. Autor: Renata Viegas

2008.1 SQL. Autor: Renata Viegas SQL Autor: Renata Viegas A linguagem SQL SQL - Structured Query Language. Foi definida nos laboratórios de pesquisa da IBM em San Jose, California, em 1974. Teve seus fundamentos no modelo relacional Sua

Leia mais

19/05/2009. Módulo 1

19/05/2009. Módulo 1 ASP.NET Módulo 1 Objetivo Mostrar os conceitos fundamentais da plataforma Microsoft.Net e suas ferramentas; Apresentar os conceitos fundamentais de aplicações web e seus elementos; Demonstrar de forma

Leia mais

Oracle PL/SQL Overview

Oracle PL/SQL Overview Faculdades Network Oracle PL/SQL Overview Prof. Edinelson PL/SQL Linguagem de Programação Procedural Language / Structured Query Language Une o estilo modular de linguagens de programação à versatilidade

Leia mais

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Disciplina: INF 02810 Prof.: (monalessa@inf.ufes.br) Conteúdo 1. Introdução 2. Processo de Software 3. Gerência de

Leia mais

NOTA FISCAL DE SERVIÇOS ELETRÔNICA (NFS-e)

NOTA FISCAL DE SERVIÇOS ELETRÔNICA (NFS-e) S Manual de Utilização do Web Service (Modelo Nacional - Versão 1.1) Página 2 de 14 Índice 1. INTRODUÇÃO... 3 2. SERVIÇOS DISPONÍVEIS... 4 2.1. SERVIÇOS DO MODELO NACIONAL... 4 2.1.1. Recepção e Processamento

Leia mais

Criando um carrinho de compras

Criando um carrinho de compras Criando um carrinho de compras Um carrinho de compras feito em ASP.NET para você adaptar ao seu negócio e incluir no seu site. Além de aprender conceitos importantes relacionados a tecnologia ASP.NET vai

Leia mais

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL 1. O que é Linguagem SQL 2. Instrução CREATE 3. CONSTRAINT 4. ALTER TABLE 5. RENAME TABLE 6. TRUCANTE TABLE 7. DROP TABLE 8. DROP DATABASE 1 1. O que é Linguagem SQL 2. O SQL (Structured Query Language)

Leia mais

Sumário Agradecimentos... 19 Sobre.o.autor... 20 Prefácio... 21 Capítulo.1..Bem-vindo.ao.MySQL... 22

Sumário Agradecimentos... 19 Sobre.o.autor... 20 Prefácio... 21 Capítulo.1..Bem-vindo.ao.MySQL... 22 Sumário Agradecimentos... 19 Sobre o autor... 20 Prefácio... 21 Capítulo 1 Bem-vindo ao MySQL... 22 1.1 O que é o MySQL?...22 1.1.1 História do MySQL...23 1.1.2 Licença de uso...23 1.2 Utilizações recomendadas...24

Leia mais

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões Prof. MSc. Hugo Souza Se você precisar manter informações sobre seus usuários enquanto eles navegam pelo seu site, ou até quando eles saem

Leia mais

Laboratório de Banco de Dados Prof. Luiz Vivacqua. PL/pgSQL A Linguagem de programação do PostgreSQL

Laboratório de Banco de Dados Prof. Luiz Vivacqua. PL/pgSQL A Linguagem de programação do PostgreSQL Laboratório de Banco de Dados Prof. Luiz Vivacqua PL/pgSQL A Linguagem de programação do PostgreSQL 1) Visão Geral A PL/pgSQL é uma linguagem de programação procedural para o Sistema Gerenciador de Banco

Leia mais

Structured Query Language (SQL) Ambiente Simplificado de um SGBD

Structured Query Language (SQL) Ambiente Simplificado de um SGBD Structured Query Language (SQL) Ambiente Simplificado de um SGBD 2 1 Características dos SGBDs Natureza auto-contida de um sistema de banco de dados: metadados armazenados num catálogo ou dicionário de

Leia mais

Documentação do retorno XML referente projeto Busca Endereço por CEP

Documentação do retorno XML referente projeto Busca Endereço por CEP 1/9 Documentação do retorno XML referente projeto Busca Endereço por CEP Neste documento você encontrará a estrutura do XML que o web service retona e alguns exemplos de como usar. Códigos de Retorno para

Leia mais

PL/pgSQL por Diversão e Lucro

PL/pgSQL por Diversão e Lucro PL/pgSQL por Diversão e Lucro Roberto Mello 3a. Conferência Brasileira de PostgreSQL - PGCon-BR Campinas - 2009 1 Objetivos Apresentar as partes principais do PL/pgSQL Apresentar casos de uso comum do

Leia mais

Manipulação de Dados em PHP (Visualizar, Inserir, Atualizar e Excluir) Parte 2

Manipulação de Dados em PHP (Visualizar, Inserir, Atualizar e Excluir) Parte 2 Desenvolvimento Web III Manipulação de Dados em PHP (Visualizar, Inserir, Atualizar e Excluir) Parte 2 Prof. Mauro Lopes 1-31 21 Objetivos Nesta aula iremos trabalhar a manipulação de banco de dados através

Leia mais

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 10 - PROCEDIMENTOS ARMAZENADOS - STORED PROCEDURES 1. INTRODUÇÃO Em muitas situações será necessário armazenar procedimentos escritos com a finalidade de se utilizar recursos como loop, estruturas

Leia mais

DESENVOLVIMENTO DE SOFTWARE

DESENVOLVIMENTO DE SOFTWARE VARIAÁ VEL Antes de iniciarmos os comandos referentes a Banco de Dados, precisamos de uma breve descrição técnica sobre Variáveis que serão uma constante em programação seja qual for sua forma de leitura.

Leia mais

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger a tecnologia de banco de dados permite persistir dados de forma a compartilha-los com varias aplicações. Aplicação 1 aplicação 2 aplicação 3 SGDB Banco

Leia mais

PROJETO PEDAGÓGICO DE CURSOS

PROJETO PEDAGÓGICO DE CURSOS 1 de 6 PROJETO PEDAGÓGICO DE CURSOS BURITREINAMENTOS MANAUS-AM NOVEMBRO / 2014 2 de 6 PACOTES DE TREINAMENTOS BURITECH A Buritech desenvolveu um grupo de pacotes de treinamentos, aqui chamados de BuriPacks,

Leia mais

SQL. Histórico BANCO DE DADOS. Conceito. Padrões de SQL (1) Componentes do SQL (1) Padrões de SQL (2) (DDL: CREATE TABLE, CONSTRAINTS)

SQL. Histórico BANCO DE DADOS. Conceito. Padrões de SQL (1) Componentes do SQL (1) Padrões de SQL (2) (DDL: CREATE TABLE, CONSTRAINTS) BANCO DE DADOS SQL (DDL: CREATE TABLE, CONSTRAINTS) Prof. Edson Thizon Histórico Entre 1974 e 1979, o San José Research Laboratory da IBM desenvolveu um SGDB relacional que ficou conhecido como Sistema

Leia mais

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Trabalhando com conexão ao banco de dados MySQL no Lazarus Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Edição 4 O Componente Trabalhando com conexão ao banco de dados MySQL no Lazarus Ano: 03/2011

Leia mais

(UFF) JDBC (I) TEPIS II

(UFF) JDBC (I) TEPIS II Aula 20: JDBC (I) Diego Passos Universidade Federal Fluminense Técnicas de Projeto e Implementação de Sistemas II Diego Passos (UFF) JDBC (I) TEPIS II 1 / 33 JDBC: Introdução Especificação que provê acesso

Leia mais

Desmistificando o Hibernate Envers em 10 passos

Desmistificando o Hibernate Envers em 10 passos _envers Desmistificando o Hibernate Envers em 10 passos Auditoria de dados? Registro de Log? Trilha de auditoria? Descubra como é fácil, através do Hibernate Envers, rastrear o histórico de mudanças e

Leia mais

O que são Bancos de Dados?

O que são Bancos de Dados? SQL Básico Liojes de Oliveira Carneiro professor.liojes@gmail.com www.professor-liojes.blogspot.com O que são Bancos de Dados? É o software que armazena, organiza, controla, trata e distribui os dados

Leia mais

Tarefa Orientada 19 Triggers

Tarefa Orientada 19 Triggers Tarefa Orientada 19 Triggers Objectivos: Criar triggers AFTER Criar triggers INSTEAD OF Exemplos de utilização Os triggers são um tipo especial de procedimento que são invocados, ou activados, de forma

Leia mais

DESENVOLVENDO SOLUÇÕES COM VISUAL FOXPRO 8 E 9

DESENVOLVENDO SOLUÇÕES COM VISUAL FOXPRO 8 E 9 DESENVOLVENDO SOLUÇÕES COM VISUAL FOXPRO 8 E 9 Í N D I C E Capítulo 1 - O Início de Tudo 1 Reunindo todas as informações necessárias 2 Instalando o Visual FoxPro 2 Configurando o Visual FoxPro 7 Capítulo

Leia mais

SISTEMA DE BANCO DE DADOS. Banco e Modelagem de dados

SISTEMA DE BANCO DE DADOS. Banco e Modelagem de dados SISTEMA DE BANCO DE DADOS Banco e Modelagem de dados Sumário Conceitos/Autores chave... 3 1. Introdução... 4 2. Arquiteturas de um Sistema Gerenciador... 5 3. Componentes de um Sistema... 8 4. Vantagens

Leia mais

Sistemas de Informação

Sistemas de Informação Sistemas de Informação Rules and Triggers André Restivo Sistemas de Informação 2006/07 Rules e Triggers Nem todas as restrições podem ser definidas usando os mecanismos que estudamos anteriormente: - CHECK

Leia mais

Classes de Entidades Persistentes JDB

Classes de Entidades Persistentes JDB Classes de Entidades Persistentes JDB Brasil, Natal-RN, 07 de setembro de 2011 Welbson Siqueira Costa www.jdbframework.com Nota de Retificação: em 11/12/2011 a Listagem 3 desse tutorial sofreu uma pequena

Leia mais

SQL Procedural. Josino Rodrigues Neto josinon@gmail.com

SQL Procedural. Josino Rodrigues Neto josinon@gmail.com SQL Procedural Josino Rodrigues Neto josinon@gmail.com SQL Procedural Agregada em SQL-92 As ferramentas têm nomes para suas linguagens SQL procedurais/embutidas Oracle : PL/SQL Postgres PL/Pgsql SQL Server

Leia mais

UNIVERSIDADE VEIGA DE ALMEIDA CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO CURSO SUPERIOR DE TECNOLOGIA EM PROCESSAMENTO DE DADOS BANCO DE DADOS

UNIVERSIDADE VEIGA DE ALMEIDA CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO CURSO SUPERIOR DE TECNOLOGIA EM PROCESSAMENTO DE DADOS BANCO DE DADOS CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO CURSO SUPERIOR DE TECNOLOGIA EM PROCESSAMENTO DE DADOS CLAUDIO RIBEIRO DA SILVA MARÇO 1997 2 1 - CONCEITOS GERAIS DE 1.1 - Conceitos Banco de Dados - Representa

Leia mais

UTILIZANDO CÓDIGO JAVA EM BANCO DE DADOS ORACLE

UTILIZANDO CÓDIGO JAVA EM BANCO DE DADOS ORACLE bd oracle_ UTILIZANDO CÓDIGO JAVA EM BANCO DE DADOS ORACLE Como criar procedimentos e funções em banco de dados Oracle utilizando Java O SGBD (Sistema de Gerenciamento de Banco de Dados) da Oracle possui,

Leia mais

Curso de Aprendizado Industrial Desenvolvedor WEB

Curso de Aprendizado Industrial Desenvolvedor WEB Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos II Professor: Cheli dos S. Mendes da Costa Modelo Cliente- Servidor Modelo de Aplicação Cliente-servidor Os

Leia mais

sobre rogério gonçalves gerente de projetos > digitale agência digital rogerio@digitale.com.br h7p://www.digitale.com.br h7p://leveme.

sobre rogério gonçalves gerente de projetos > digitale agência digital rogerio@digitale.com.br h7p://www.digitale.com.br h7p://leveme. sobre rogério gonçalves gerente de projetos > digitale agência digital rogerio@digitale.com.br h7p://www.digitale.com.br h7p://leveme.la/rogerio definição - é uma forma de programar e organizar um sistema

Leia mais

Desenvolvimento de Aplicações para Internet Aula 8

Desenvolvimento de Aplicações para Internet Aula 8 Desenvolvimento de Aplicações para Internet Aula 8 Celso Olivete Júnior olivete@fct.unesp.br na aula passada Orientação a Objetos Classes Objetos Construtores Destrutores 2 na aula passada Construtores

Leia mais

PostgreSQL o SGBD das 1001 linguagens Diogo Biazus diogob@gmail.com

PostgreSQL o SGBD das 1001 linguagens Diogo Biazus diogob@gmail.com PostgreSQL o SGBD das 1001 linguagens Diogo Biazus diogob@gmail.com Um dos grandes diferenciais do PostgreSQL em relação à maioria dos outros sistemas de bancos de dados é a presença de diversas linguagens

Leia mais

ADMINISTRAÇÃO DE BANCO DE DADOS

ADMINISTRAÇÃO DE BANCO DE DADOS ADMINISTRAÇÃO DE BANCO DE DADOS ARTEFATO 03 AT03 Diversos II Page 1 of 25 Indice EXEMPLOS COM GROUP BY E COM A CLÁUSULA HAVING - TOTALIZANDO DADOS... 3 GROUP BY... 3 Cláusula HAVING com GROUP BY... 5 ENTENDENDO

Leia mais

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza PHP e Banco de Dados progweb2@thiagomiranda.net Conteúdos Os materiais de aula, apostilas e outras informações estarão disponíveis em: www.thiagomiranda.net PHP e Banco de Dados É praticamente impossível

Leia mais

Gabarito - Banco de Dados SQL - 30/07/2013 AULA 01

Gabarito - Banco de Dados SQL - 30/07/2013 AULA 01 Gabarito - Banco de Dados SQL - 30/07/2013 AULA 01 1 1- Bancos de dados compreendem desde agendas telefônicas até sistemas computadorizados. (Sim) 2- Só podemos instalar o SQL Server Express se tivermos

Leia mais

NOTA FISCAL DE SERVIÇOS ELETRÔNICA (NFS-e)

NOTA FISCAL DE SERVIÇOS ELETRÔNICA (NFS-e) S Manual de Utilização do Web Service (Modelo Nacional Versão 1.0) Sistema desenvolvido por Tiplan Tecnologia em Sistema de Informação. Todos os direitos reservados. http://www.tiplan.com.br Página 2 de

Leia mais

O uso de exceções permite separar a detecção da ocorrência de uma situação excepcional do seu tratamento, ao se programar um método em Java.

O uso de exceções permite separar a detecção da ocorrência de uma situação excepcional do seu tratamento, ao se programar um método em Java. Exceções em Java Miguel Jonathan DCC/IM/UFRJ (rev. abril de 2011) Resumo dos conceitos e regras gerais do uso de exceções em Java O uso de exceções permite separar a detecção da ocorrência de uma situação

Leia mais

SQL Structured Query Language

SQL Structured Query Language Janai Maciel SQL Structured Query Language (Banco de Dados) Conceitos de Linguagens de Programação 2013.2 Structured Query Language ( Linguagem de Consulta Estruturada ) Conceito: É a linguagem de pesquisa

Leia mais

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri SQL Linguagem de Definição de Dados Banco de Dados SQL Structured Query Language Uma das mais importantes linguagens relacionais (se não a mais importante) Exemplos de SGBD que utilizam SQL Oracle Informix

Leia mais

Acadêmica: Giselle Mafra Schlosser Orientador: Everaldo Artur Grahl

Acadêmica: Giselle Mafra Schlosser Orientador: Everaldo Artur Grahl AVALIAÇÃO DA QUALIDADE DO CÓDIGO FONTE ESCRITO EM PL/SQL Acadêmica: Giselle Mafra Schlosser Orientador: Everaldo Artur Grahl Roteiro Introdução Objetivos do trabalho Fundamentação teórica Desenvolvimento

Leia mais

SQL SQL BANCO DE DADOS 2. Componentes do SQL (1) Componentes do SQL (2) DDL Criação de banco de dados. Padrões de SQL

SQL SQL BANCO DE DADOS 2. Componentes do SQL (1) Componentes do SQL (2) DDL Criação de banco de dados. Padrões de SQL BANCO DE DADOS 2 SQL (CREATE TABLE, CONSTRAINTS, DELETE, UPDATE e INSERT) Prof. Edson Thizon SQL SQL ( structured query language ) é uma linguagem comercial de definição e manipulação de banco de dados

Leia mais

PostgreSQL. www.postgresql.org. André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br

PostgreSQL. www.postgresql.org. André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br PostgreSQL www.postgresql.org André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br Características Licença BSD (aberto, permite uso comercial) Multi-plataforma (Unix, GNU/Linux,

Leia mais

INTRODUÇÃO À LINGUAGEM SQL CRIAÇÃO DE BANCO DE DADOS E OTIMIZAÇÃO DE CONSULTAS

INTRODUÇÃO À LINGUAGEM SQL CRIAÇÃO DE BANCO DE DADOS E OTIMIZAÇÃO DE CONSULTAS Esclarecimento Licenciamento de Uso Este documento é propriedade intelectual 2012 da NRSYSTEM COMÉRCIO E SERVIÇOS DE INFORMÁTICA LTDA-ME, consiste de uma compilação de diversos materiais entre livros,

Leia mais

Criação de uma base de dados em MS SQL Server e acesso com VB 6. Professor Sérgio Furgeri

Criação de uma base de dados em MS SQL Server e acesso com VB 6. Professor Sérgio Furgeri OBJETIVOS DA AULA: Criação de uma base de dados em MS SQL Server e acesso com VB 6. Fazer uma breve introdução a respeito do MS SQL Server 7.0; Criar uma pequena base de dados no MS SQL Server 7.0; Elaborar

Leia mais

Gatilhos (Triggers) Prof. Márcio Bueno {bd2tarde,bd2noited}@marciobueno.com. Elaborado por Maria Lígia B. Perkusich

Gatilhos (Triggers) Prof. Márcio Bueno {bd2tarde,bd2noited}@marciobueno.com. Elaborado por Maria Lígia B. Perkusich Gatilhos (Triggers) Prof. Márcio Bueno {bd2tarde,bd2noited}@marciobueno.com Elaborado por Maria Lígia B. Perkusich O que é um gatilho (trigger)? Um gatilho é um tipo especial de procedimento armazenado

Leia mais

Triggers. um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre.

Triggers. um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre. Triggers um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre. o evento pode ser INSERT, UPDATE, ou DELETE. o trigger pode ser accionado imediatamente

Leia mais

SISTEMAS DE BANCO DE DADOS. Prof. Adriano Pereira Maranhão

SISTEMAS DE BANCO DE DADOS. Prof. Adriano Pereira Maranhão SISTEMAS DE BANCO DE DADOS Prof. Adriano Pereira Maranhão 1 REVISÃO BANCO DE DADOS I O que é banco de dados? Ou seja afinal o que é um SGBD? REVISÃO BD I REVISÃO DE BD I Um Sistema de Gerenciamento de

Leia mais

Triggers e Regras. Fernando Lobo. Base de Dados, Universidade do Algarve

Triggers e Regras. Fernando Lobo. Base de Dados, Universidade do Algarve Triggers e Regras Fernando Lobo Base de Dados, Universidade do Algarve 1 / 14 Triggers Um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre.

Leia mais

ASP.NET 2.0 - Visual Studio 2005 (Whidbey) Ramon Durães

ASP.NET 2.0 - Visual Studio 2005 (Whidbey) Ramon Durães ASP.NET 2.0 - Visual Studio 2005 (Whidbey) Ramon Durães O ASP.NET que é a camada de desenvolvimento de aplicações web da plataforma.net vem agradando em muito os desenvolvedores de todo o mundo desde o

Leia mais

Transações Seguras em Bancos de Dados (MySQL)

Transações Seguras em Bancos de Dados (MySQL) Transações Seguras em Bancos de Dados (MySQL) Índice Entendendo os storage engines do MySQL 5 1 As ferramentas 1 Mais algumas coisas que você deve saber 1 Com a mão na massa 2 Mais ferramentas Usando o

Leia mais

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA RESUMO DE AULA CRIAÇÃO E MANIPULAÇÃO DO BANCO DE DADOS

Leia mais

BANCO DE DADOS CONCEITOS BÁSICOS

BANCO DE DADOS CONCEITOS BÁSICOS Universidade Federal da Paraíba UFPB Centro de Energias Alternativas e Renováveis - CEAR Departamento de Eng. Elétrica DEE BANCO DE DADOS CONCEITOS BÁSICOS Isaac Maia Pessoa Introdução O que é um BD? Operações

Leia mais

AJAX no GASweb. Mas e afinal, para que usamos o AJAX?

AJAX no GASweb. Mas e afinal, para que usamos o AJAX? Nível - Avançado AJAX no GASweb Por: Pablo Hadler AJAX (Asynchronous Javascript and XML) foi criado com o princípio de ser uma maneira rápida e otimizada de podermos fazer requisições Web, sendo esta totalmente

Leia mais

Podemos agora ver no IDE do Morfik os objetos que já incorporamos ao nosso projeto :

Podemos agora ver no IDE do Morfik os objetos que já incorporamos ao nosso projeto : Podemos agora ver no IDE do Morfik os objetos que já incorporamos ao nosso projeto : O form Index A tabela Fotos A query Q_seleção_de_fotos Vide figura 46. Figura 46 O próximo passo é criar um form que

Leia mais