Changes between Version 4 and Version 5 of WF/RecomendacoesdeusodeBancodeDados


Ignore:
Timestamp:
08/22/07 15:23:19 (17 years ago)
Author:
viani
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • WF/RecomendacoesdeusodeBancodeDados

    v4 v5  
     1= Recomendações de Uso de Banco de Dados = 
     2[[TOC(heading=Workflow,depth=1,WF/Changelog,WF/Documentacao,WF/Instalacao,WF/Links,WF/Propostas,WF/Recursos)]] 
     3 
    14== Classe == 
     5 
    26A classe que é utilizada nos processos de Workflow para fazer conexão com o banco de dados é a wf_db. Esta classe faz uso do [http://adodb.sourceforge.net ADOdb] como camada de abstração de banco de dados. 
    37 
    4 A documentação da classe pode ser vista neste [http://doc.workflow.celepar.parana/api/Workflow/local/wf_db.html link] 
     8A documentação da classe pode ser vista na [htdocs:wf/api/index.html documentação do código fonte do Workflow] 
    59 
    610Os métodos básicos da classe são: 
     
    1216 * ''query'' - executa um comando SQL no banco de dados. 
    1317 
    14  
    15  
    1618== Objeto == 
    1719 
    18 O objeto da classe wf_db já vem criado por padrão no desenvolvimento utilizando o MVC proposto - [wiki:WF/MetodologiadeDesenvolvimento Metodologia de Desenvolvimento]. 
     20O objeto da classe wf_db já vem criado por padrão no desenvolvimento utilizando o MVC proposto - [wiki:WF/ArquiteturadeDesenvolvimento Arquitetura de Desenvolvimento]. 
    1921 
    2022Ele pode ser acessado em qualquer classe model através do atributo {{$this->model}} 
    21  
    22  
    2323 
    2424== Bind == 
     
    2727 
    2828{{{ 
    29  
    3029/* SEM BIND */ 
    3130 
     
    3433$this->DAO->query("INSERT INTO usuario(usuario_id, nome) VALUES(2, 'Maria')"); //plano de execução 2 
    3534 
    36  
    37  
    3835/* COM BIND */ 
    3936 
     
    4138 
    4239$this->DAO->query('INSERT INTO usuario(usuario_id, nome) VALUES(?, ?)', array(2, 'Maria')); //plano de execução 3 
    43  
    4440}}} 
    4541 
     
    5248Como pode ser visto no exemplo, ao invés de se inserir os valores na query, utiliza-se {{?}} para cada valor e, depois os valores são passados em uma {{array}} como segundo parâmetro do método query. Os itens da array seguem a ordem das {{?}} utilizadas. 
    5349 
    54  
    55  
    5650== Utilização == 
    5751 
     
    5953 
    6054{{{ 
    61  
    6255$this->DAO->connect(); 
    63  
    6456}}} 
    6557 
     
    6961 
    7062{{{ 
    71  
    7263/* Exemplo 01 */ 
    7364 
     
    8576 
    8677 
    87  
    8878/* Exemplo 02 */ 
    8979 
     
    9585 
    9686        $data[] = $row; 
    97  
    9887}}} 
    99  
    100  
    10188 
    10289=== INSERT === 
    10390 
    10491{{{ 
    105  
    10692$result = $this->DAO->query("INSERT INTO area(area_id, nome) VALUES(?, ?)", array(1, 'DISER')); 
    10793 
     
    11399 
    114100        echo "Erro na execução da query"; 
    115  
    116101}}} 
    117  
    118  
    119102 
    120103=== UPDATE === 
    121104 
    122105{{{ 
    123  
    124106/* troca o nome do usuário José para Joselito 
    125107 
    126108$result = $this->DAO->query("UPDATE usuario SET nome = ? WHERE (nome = ?)", array('Joselito', 'José')); 
    127  
    128109}}} 
    129  
    130  
    131110 
    132111=== DELETE === 
    133112 
    134113{{{ 
    135  
    136114/* apaga o usuário cujo ID é 3 */ 
    137115 
    138116$result = $this->DAO->query("DELETE FROM usuario WHERE (usuario_id = ?)", array(3)); 
    139  
    140117}}} 
    141118 
     119== Casos Especiais == 
    142120 
    143  
    144 === Casos Especiais === 
    145  
    146 ==== Inserção de Arquivos no Banco de Dados ==== 
     121=== Inserção de Arquivos no Banco de Dados === 
    147122 
    148123O procedimento para inserir o conteúdo de um arquivo no Banco de Dados, requer uma pequena modificação que faz o tratamento do conteúdo antes de inseri-lo. Este tratamento é feito através da chamada ao método {{escapeBytea}}: 
    149124 
    150125{{{ 
    151  
    152126/* supondo que $bin possua o conteúdo do arquivo */ 
    153127 
    154128$bin = $this->DAO->escapeBytea($bin); 
    155129 
    156 $result = $this->DAO->query("INSERT INTO tabela_arquivo(nome, conteudo) VALUES(?, ?)", array('arquivo.dat', $bin)); 
    157  
     130$result = $this->DAO->query("INSERT INTO tabela_arquivo(nome, conteudo) VALUES(?, ?)",  
     131      array('arquivo.dat', $bin)); 
    158132}}} 
    159133 
    160  
    161  
    162 ==== Transações ==== 
     134=== Transações === 
    163135 
    164136Em alguns casos, é vital a utilização de transações. Sua utilização é muito simples, como pode ser visto abaixo: 
    165137 
    166138{{{ 
    167  
    168139/* neste exemplo criamos uma área e tentamos colocar o funcionário José nesta nova área. 
    169140 
     
    187158 
    188159        $this->DAO->failTrans(); // faz o rollback das alterações 
    189  
    190160}}}