+1

Criando uma API independente de Banco de Dados (Parte 2 - mSQL e Oracle))

criado por Wellington Costa de Almeida em 13/05/2004 10:34am
Os dois módulos anteriores, foram fáceis de implementar, então por que não passar um difícil? O Oracle é um banco de dados de capacidade industrial usado na maioria dos principais sites de Web, incluindo Yahoo! E Amazon.com. Mais informações sobre o Oracle podem ser encontradas em http://www.oracle.com/.

DB/Oracle.php

<?php
include_once(“DB/standard.php”)

function db_connect($args=array()) {
    array_shift($args);
    $conn = @ora_logon($args[0], $args[1]);
    $dbh = @ora_open($conn);
    return($dbh);
}

function db_pconnect($args=array()) {
    array_shift($args);
    $conn = @ora_plogon($args[0], $args[1]);
    $dbh = @ora_open($conn);
    return($dbh);
}

function db_db_query($args=array()) {
    return db_query($args);
}

function db_query($args=array()) {
    if (@ora_parse($args[0], $args[1] < 0) {
        return(false)
    }
    @ora_exec($args[0]);
    return($args[0]);
}

function db_fetchrow($args=array()) {
    switch ($args[1]) {
        case DB_GETMODE_ASSOC:
             $cols = @ora_fetch_into($args[0], &$rows, ORA_FETCHINTO_ASSOC);
             break;
        case DB_GETMODE_NULL:
             $cols = @ora_fetch_into($args[0], &$rows, ORA_FETCHINTO_NULL);
             break;
        default:
             $cols = @ora_fetch_into($args[0], &$rows);
             break;
    }
    if ($cols) {
        return($rows);
    }
    return(false)
}

function db_prepare($args=array()) {
    return db_simulate_prepare($args);
}

function db_execute($args=array()) {
    $stmt = db_simulate_execute (&$args);
    return db_fetchrow(array($stmt, array_shift ($args)));
}

function db_num_rows($args=array()) {
    return @ora_numrows($args[0]);
}

function db_commit($args=array()) {
    return @ora_commit($args[0]);
}

function db_rollback($args=array()) {
    return @ora_rollback($args[0]);
}

function db_autoCommit ($args=array()) {
    return $args[1] ? @ora_commiton($args[0]) : @ora_commintoff($args[0]);
}

function db_free_result($args=array()) {
    return @ora_close($args);
}

function db_close($args=array()) {
    return @ora_logoff($args[0]);
}
?>

Explicação:

Na extensão anterior, usamos a extensão Oracle do PHP, não a extensão OCI8, para criar nosso módulo. Fizemos isso porque a extensão Oracle, embora não seja tão poderosa a extensão OCI8, é mais parecida com o resto da extensão do PHP.

Connect -> Open -> Query -> Fetch -> Close -> Disconnect

Isso é diferente dos outros banco de dados, que têm a seguinte seqüência de operações:

Connect -> Query -> Fetch -> Disconnect

Portanto, devemos combinar os estágios Connect e Open, bem como os estágios Colse e Disconnect, para que o módulo Oracle Funcione.

Ao criar uma API independente de banco de dados, o conjunto de recursos é limitado, porque o PHP e outros bancos de dados não suportam alguns dos recursos que o Oracle aceita. Se você precisa dos recursos avançados do Oracle, sugiro que verifique a documentação dos módulos Oracle e OCI8.

Casso você tenha mais interesses em aprender sobre Oracle, procure na livraria próxima a sua cassa o Livro Oracle Beginning ou envie um e-mail para mim com a sua duvida e estarei satisfeito em responder.

Mensagem:

Espero que tenham gostado dessa segunda parte do meu artigo, onde abortei profundamente os módulos de mSQL e Oracle. Eu continuo recebendo dicas de como melhorar esse artigo todos os dias, para passar as melhores formas e soluções para os usuários da PHPBrasil.com. Na próxima parte desse Artigo, estarei abordando os módulos do MSSQL, ODBC e PostgreSQL. O pessoal que tem interesses em ver alguma coisa nesse artigo juntamente com OO, aguarde que eu vou chegar lá. Quem quiser entrar em contato direto comigo estou na rede BrasNET com o Nick t0m_boY.

Brigado e espero que gostem.

[]’s

Comentários:

Mostrando 1 - 10 de 14 comentários
André Taiar disse:
Kd o link pro seu 1º artigo? o.O
09/07/2004 6:05am (~20 anos atrás)

Nossa... Quando eu bati os olhos na foto vi q o cara tinha cara de vagabundo e sem vergonha, ai fui ler o tal artigo e vi os comentarios kkkkkkkkkkkkkkkkkkkkkkkk e aunda por cima não entende nada de PHP kkkkkk, vai ver é mirqueiro!
05/07/2004 7:11am (~20 anos atrás)

Putz, não tinha visto a revolta dos caras aqui... HAHAHAHAHAHA ...

Caramba em Vinicios e Claúdio não basta o vejame que vocês estão passando? hahahaha... Put'z grila, vai ter morte? será? ai meu deus... HAHAHAHAHA ...

Po visitem meu fotolog lá... ;) De uma olhada no carro novo do minino, a sim e estou comprando outro já... :P [s] ae grandes homens...
01/07/2004 9:35pm (~20 anos atrás)

Realmente o que o pessoal anda falando ai é tudo verdade. Infelizmente, os artigos por ele publicado são copiados de livos. E como alguem pode dizer que é jornalista e publicitário não tendo nenhum estudo???? Conhecí muita gente que ele deu calote... e quanto a história do cold_milk é a pura verdade. Gostaria de falar para ele esquecer a dívida, porque nunca vai receber...
WiniTOF, também esqueça... sua grana ja era... Acho que este site deveria qualificar melhor seus usuários.
Como alguém que é publicitário e jornalista comete erros de português que nem uma criança do primário comete?
Vamos acabar com caloteiros divulgando isto para todo mundo...
22/06/2004 8:48am (~20 anos atrás)

Éder Baum disse:
Uhhhh que loucura :+D, o phpBrasil virou local de cobrança de divida é???

Voltando a matéria. Concordo com o Rodrigo Rodrigues. Fica quase impossivel uma classe concorrer com algo do PEAR, pois as classes do Pear dificilmente falharão o vão dar Pau, sem falar que a Classe DB em especial é um Show a parte, e além de tudo com ampla documentação. Mais info em: http://pear.php.net/manual/en/package.database.php#package.database.db
17/06/2004 12:12am (~20 anos atrás)

Então, é basiado nele mesmo...
05/06/2004 8:02pm (~20 anos atrás)

claudio disse:
Resumindo a história do caloteiro Welligton:
conheci ele na brasnet #curitiba, era muito atencioso com os amigos ate então ele descobrir que trabalho numa grafica, foi feito uma encomenda para um cliente dele tal de IDog q ele fez a campanha publicitaria, valor R$810,00 com nota e tudo o proprio Welligton veio buscar o material, logo em seguida fez outra encomenda para a empresa dele mesmo www.w3dm.com.br q nao funciona em local algum, valor da encomenda R$1.059,00 entrgue na residencia do tal caloteiro, ja fiz varios apelos ao mesmo e nenhum foi levado a serio até o momento, ele anda muito ocupado????? creio que não viajando????? talvez mas como o nosso ultimo contato disse para enviar os valores pelo email dele que iria ser depositados na conta isso ja fazem 2 meses agora como uma pessoa assim que deve essa quantia, para ele deve ser pouco pois anda de AUDI e tudo mais será que sou ignorado assim porque confiei num rapaz de classe média e não se importa com um assalariado como eu? aqui fia minha indignação com o Sr. Welligton, não queria ter chegado nesse ponto mas cansei de apelar pra outros pedirem a ele pra me desbloquear no msn como ele mesmo fala q sempre ta lá???
flog do caloteiro
http://www.fotolog.net/pixelmore

me desculpe a essa communidade pelo desabafo

[]´s a todos
01/06/2004 8:37am (~20 anos atrás)

Obs: são R$150,00
01/06/2004 8:33am (~20 anos atrás)

E os meus R$15,00???
Porra meu quando você precisou da grana eu te arrumei, agora q eu estou precisando vc faz isso... some da net... =// ... estou de kra com vc, fika esperto...
01/06/2004 8:32am (~20 anos atrás)

Esse rapaz que aqui apresenta suas brilhantes idéias, na real é um caloteiro, ele deve para algumas pessoas e empresas na cidade de Curitiba. Sei que isso de nada vai resolver nossa situação, no entanto vamos tornar essa realidade publica, mostrando para as pessoas que esse "conceituado" rapaz não passa de um 171 ... CALOTEIRO
01/06/2004 8:13am (~20 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)