Skip to content

Conectando com mais um Banco de Dados ao mesmo tempo

Bjverde edited this page May 20, 2019 · 12 revisions

No capitulo Conectando no Banco de Dados vimos como são definidos os parâmetros para conectar em apenas um banco ou conexão default. Nessa situação não precisamos fazer nada, pois o formDin sabe qual conexão de banco usar.

Atenção os componentes geralmente usam apenas a conexão default. Abaixo uma lista de componentes

  • combinarSelects
  • Autocomplete
  • Online Search
  • Autocomplete composto com Online Search

Conectando com mais um Banco de Dados ao mesmo tempo

Quando temos mais de uma conexão precisamos informar para cada método da DAO qual será a conexão usada.

Conexão default

No exemplo abaixo mostra como informar que deseja usar conexão default. Lembrando a conexão default deve ser informada no APLICACAO/includes/config_conexao.php mais informações em Conectando no Banco de Dados. Para isso será utilizado método parent::connect(null,true,null,null);

	public static function selectNovos( $datInicio, $datFim ) {
	    parent::connect(null,true,null,null);
	    $sql = self::getSqlSelectNovos($datInicio, $datFim);
	    $result = self::executeSql($sql);
	    return $result;
	}

Conexão adicional

Abaixo um código de exemplo, onde uma classe DAO utiliza outra conexão diferente da conexão default.

Uma boa pratica é concentrar todas as configurações em um único ponto. Veja mais informações em Usando arquivo de configuração ou arquivo INI., o método ServidorConfig::getInstancia()->getPerfilAcesso() procura fazer isso.

    private $tpdo = null;

    public function __construct() {
        $tpdo = New TPDOConnectionObj();
        $tpdo->setDBMS(DBMS_MYSQL);
        $tpdo->setHost('127.0.0.1');
        $tpdo->setDataBaseName('form_exemplo');
        $tpdo->setUsername('form_exemplo');
        $tpdo->setPassword('123456');
        $tpdo->connect();
        $this->setTPDOConnection($tpdo);
    }
    public function getTPDOConnection()
    {
        return $this->tpdo;
    }
    public function setTPDOConnection($TPDOConnection)
    {
        $this->tpdo = $TPDOConnection;
    }

O método getInfoConnect() recebe as informações e disponibiliza para a DAO.

    public static function getInfoConnect() {
        $perfilBancoAcesso  = ServidorConfig::getInstancia()->getPerfilAcesso();
        $configArray= array(
             'DBMS' => $perfilBancoAcesso['DBMS']
            ,'PORT' => $perfilBancoAcesso['PORT']
            ,'HOST' => $perfilBancoAcesso['HOST']
            ,'DATABASE' => $perfilBancoAcesso['DATABASE']
            ,'USERNAME' => $perfilBancoAcesso['USERNAME']
            ,'PASSWORD' => $perfilBancoAcesso['PASSWORD']
        );
        return $configArray;
    }

No exemplo abaixo o método getUltimoArtigoModificadoJ3() recebe as informações do getInfoConnect() e faz uso do parent::connect.

    public static function getUltimoArtigoModificadoJ3() {
        $configFile    = null;
        $boolRequired  = true;
        $boolUtfDecode = null;
        $configArray   = self::getInfoConnect();
        parent::connect($configFile,$boolRequired,$boolUtfDecode,$configArray);
        
        $sql = self::getSQLUltimoArtigoModificadoJ3();
        $result = self::executeSql($sql);
        $result = self::selectArtigoById( $result['ID'][0] );
        return $result;
    }

Explicando o parent::connect

Como foi visto no padrão formDin toda classe estendem TPDOConnection. O método parent::connect pertence a classe TPDOConnection.

EVITE USAR vários arquivos configFile para conectar em vários bancos. O primeiro parâmetro $configFile existe por uma questão de retro compatibilidade.

    /***
     * Establishes the connection to the database. the main connection is informed in $configfile
     * the secondary connections are informed in $configArray. The $configArray prevails over $configfile.
     * In this case $configfile will be ignored.
     *
     * @param string $configFile    - path of file with main connection,
     * @param boolean $boolRequired - connection is mandatory
     * @param boolean $boolUtfDecode-
     * @param array $configArray    - config array for others connections
     * @return boolean
     */

Usando arquivo de configuração ou arquivo INI.

Uma boa pratica é usar um arquivo com todos os parâmetros de configuração. Assim será fácil achar e alterar as configurações. Entre as possíveis configurações está as informações de acesso ao banco de dados.

As opções mais comuns são:

  • Arquivo texto do tipo INI. Geralmente NOME.INI
  • Arquivo PHP retornando um Array PHP. Exemplos de como no caso do Laravel FrameWork, Joomla CMS ou WordPress

Referencias

Próxima etapa ?

19 - Automatizando a criação de aplicação

Clone this wiki locally