Olá Pessoal! Essa semana falarei sobre uma novidade do PHP5: o SQLite. Uma biblioteca C que implementa um banco de dados SQL embutido, sem que haja a necessidade de ter um SGDB, como MySQL e Oracle. A biblioteca lê e grava diretamente em arquivos de banco de dados no disco. Essa é uma boa alternativa para quem precisa de velocidade e não necessita de todos os recursos oferecidos pelos SGDB's.

Apresentaremos 03 maneiras de trabalhar com o SQLite e PHP:
PHP Data Objects é uma extensão que vem junto com o PHP5 que propõe aos desenvolvedores não mais utilizarem o acesso direto a API de controle da base de dados, seria a famosa abstração como o PEAR::DB. Resumindo, poderíamos mudar o banco de dados do nosso sistema apenas alterando uma única linha de código.
extension=php_pdo.dll|
extension=php_sqlite.dll
phpinfo.php
<?
phpinfo();
?>
<?
//caso a base de dados não exista, ele tenta criar
if ($db = sqlite_open("c:/pagina/databases/imasters.db", 0666, $error)) {
echo "Banco de dados aberto...";
//cria a tabela
@sqlite_query($db, "CREATE TABLE colunistas( id INTEGER PRIMARY KEY, nome TEXT)");
//insere dados
sqlite_query($db, "INSERT INTO colunistas VALUES( NULL, 'Júlio César Martini')");
//exibe os dados cadastrados
$sql = sqlite_query($db, "SELECT id, nome FROM colunistas");
//visualiza os dados gravados
while ($i = sqlite_fetch_array($sql)) {
echo "<br><br>";
echo "ID: ".$i['id']."<br>";
echo "Nome: ".$i['nome'];
}//fecha while
}
else {
die($error);
}
?><?
try {
//instancia
$db = new SQLiteDatabase("c:/pagina/databases/imasters.db", 0666);
}
catch( Exception $exception ){
die($exception->getMessage());
}
//cria a tabela
//comentar as 02 linhas abaixo após executar o script pela primeira vez
$sqlC = "CREATE TABLE colunistas(id INTEGER PRIMARY KEY, nome TEXT)";
$db->queryExec($sqlC);
//insere dados
$sqlI = "INSERT INTO colunistas (id, nome) VALUES (NULL, 'Júlio César Martini')";
$db->queryExec($sqlI);
//visualiza
foreach ($db->query("SELECT id, nome FROM colunistas") as $row) {
print_r($row);
echo "<br>";
}
?><?
//instância
$db = new PDO("sqlite:c:/pagina/databases/imasters.db");
//cria a tabela
$sqlC = "CREATE TABLE colunistas ( id INTEGER PRIMARY KEY, nome TEXT)";
$db->exec($sqlC);
//insere os dados
$sqlI = "INSERT INTO colunistas (id, nome) VALUES (NULL, 'Júlio César Martini')";
$stmt = $db->exec($sqlI);
//visualiza
foreach ($db->query("SELECT id, nome FROM colunistas") as $row) {
print_r($row);
echo "<br>";
}
?>A trigger é disparada implicitamente quando uma tabela é modificada, um objeto é criado ou quando ocorre ações de usuário no sistema. O exemplo abaixo, cria uma trigger que terá por finalidade gravar o valor antigo do campo nome da tabela colunista sempre que ela for alterada.
01. No prompt, digite sqlite3 <

02. Crie a tabela HIST_COLUNISTAS;
CREATE TABLE hist_colunistas(
id INTEGER
, nome_antigo TEXT
, nome_novo TEXT);
03. Crie a trigger: tr_af_up_colunistas:
CREATE TRIGGER tr_af_up_colunistas
AFTER UPDATE ON colunistas
FOR EACH ROW
BEGIN
INSERT INTO hist_colunistas(id, nome_antigo, nome_novo)
VALUES(OLD.id, OLD.nome, NEW.nome);
END;
04. Quando ocorrer qualquer alteração na tabela colunistas, será gravado um registro na tabela hist_colunistas;
A view é uma tabela virtual onde os dados não estão fisicamente armazenados. Ela é apenas uma visão de uma ou mais colunas de uma ou mais tabelas do banco.
CREATE VIEW IF NOT EXISTS imasters AS
SELECT nome FROM colunistas;No exemplo acima, estamos criando uma view chamada imasters que terá como coluna apenas o nome dos colunistas.
Abaixo, segue algumas ferramentas para manipulação de arquivos baseados no SQLite.
SQLiteFront (português)|
http://sqlitefront.sourceforge.netSQLite Database Browser|
http://sqlitebrowser.sourceforge.netSQLite Manager|
http://www.sqlitemanager.org/PHP SQLite Admin|
http://phpsqliteadmin.sourceforge.net/Abaixo, segue alguns links para complementar o estudo desse artigo:
Site Oficial SQLite:
http://www.sqlite.org/Comunidade Brasileira SQLite
http://sqlitebrasil.codigolivre.org.brSQLite ODBC Driver
http://www.ch-werner.de/sqliteodbc/Downloads: Download do Script
Semana que vem tem mais. Espero que vocês tenham gostado.
Não deixe de nos enviar críticas ou sugestões para o próximo assunto, afinal a coluna é de vocês.
Boa semana a todos!
Até mais.

Júlio, primeiramente gostaria de parabenizá-lo pela presente matéria. Bem interessante.
Agora gostaria de contar com sua ajuda para resolver um probleminha. Até lhe enviei um email a respeito.
Preciso que minha própria página php altere seu código fonte. Tipo:
tenho um campo de texto. Nele digito "oi mundo". no meu código original, antes era:
define('fulano',"");
Agora terá que ficar:
define('fulano',"oi mundo");
O código pegou o valor da input e jogou no fonte, alterando-o. Como faço isso:??
Desde já conto com sua capacidade
Abraços

ah, se puder, me envie uma resposta para o email pigctu@gmail.com
Responder comentário
Olá Júlio, seus artigos já me ajudaram muito em meu trabalho e é com satisfação que vejo seu retorno aos artigos php depois de alguns meses. Sucesso!!!
Responder comentário
Em pensar que no Ubuntu você instala o Sqlite no PHP só indo no Gerenciador de Pacotes e marcando para instalação o pacote php5-sqlite... dois cliques e pronto.
Responder comentário
Não consigo instalar o Apache no Windows 2000 Professional. A intalação "trava", e nunca é concluida.
Ela chega no status: creating shortcurts.
jfbransou@gmail.com
Os textos publicados neste espaço são de responsabilidade única de seus autores (colunistas e leitores) e podem não expressar necessariamente a opinião do iMasters.
Júlio César Martini atualmente presta serviços de WebMaster/Programador para o UOL (http://www.uol.com.br), Graduado em Tecnólogo em Informática pela UNIFIAN - Faculdades Anhanguera e Pós-Graduado em Desenvolvimento de Software para Web pela UFSCAR. Foi o primeiro profissional a chegar à marca de 100 artigos publicados no iMasters e trabalha com PHP desde 2000. Site: http://www.juliocesarmartini.com
2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.