Classe para trabalhar com SQL Server
Publicado por Vinicus S Moraes 05/07/2008
[ Hits: 8.558 ]
Homepage: http://vsmoraes.wordpress.com
Criei esta classe de conexão com o banco SQL Server para facilitar o trabalho em alguns sites que estou fazendo e decidir compartilhar.
Usei a mesma idéia da classe que eu fiz para trabalhar com mySQL.
É bem simples e está 90% comentada.
Possui métodos para paginação e etc.
<!-- Vou implementar aqui algumas classes em CSS para ficar mais fácil de tratar a aparência das mensagens de erro. --> <style type="text/css"> p { margin:3px; } table {border-collapse:collapse;} .tdTitle { border:1px solid #000000; background-color:#CCCCCC; color:#000000; font-family: Verdana, Arial, Helvetica, sans-serif; height:30px; font-size: 12px; font-weight: bold; } .td1 {border:1px solid #000000; background-color:#FFFFDF; color:#000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px;} .td2 {border:1px solid #000000; background-color:#FFFFFF; color:#000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px;} </style> <!-- Fim --> <? /* ############################################# # Classe para trabalhar com banco de dados # # SQL Server # #Testado em um Servidor com: # # Apache 1.3 # # PHP 5 # # SQL Server 2000 # # Internet Explorer 6+ # # Mozila FireFox # # # #Autor: Vinicius S. Moraes # # vsmoraes <vinicius@vsmora.com> # ############################################# */ class sqlControl { // Altere as variáveis abaixo de acordo com seu servidor SQL para a conexão: var $HOST = "localhost"; // Host/IP do servidor SQL Server. var $USER = "sa"; // Usuário vinculado ao SQL. var $PASS = ""; // Senha do usuário. var $DB = "S7_Real"; // Especifique o nome do banco de dados. var $QUERY = ""; var $RESULTADO = ""; var $ERROS = ""; // Variável que irá armazenar mensagens de erros, se houver. var $CONECTADO = 0; function sqlControl() { // Método Contrutor - Chamado no momento que da declaração de um objeto dessa classe. $this->connect(); // Tentativa de conexão com o banco } function addErro($erro) { // Método para adicionar erros $this->ERROS = $this->ERROS . $erro; } function clearErros() { // Método que limpa os erros $this->ERROS = ""; } function printErros() { // Método para impressão dos erros na tela if ($this->ERROS || $this->ERROS != "") { echo "<table width='98%' border='0' cellpadding='0' cellspacing='0' align='center'>"; echo "<tr>"; echo "<td class='td1' align='center' valign='middel'>"; echo "<br>"; echo $this->ERROS; echo "<br>"; echo "</td>"; echo "</tr>"; echo "</table>"; } } function connect() { // Método de conexão com o banco $this->clearErros(); // Conexão com o SQL, se falhar é atribuido uma mensagem de erro à variável $ ERROS. $this->CONECTADO = 1; if (!@mssql_connect($this->HOST, $this->USER, $this->PASS)) { $this->addErro("Erro ao conectar ao banco de dados. Verifique o HOST, o USUÁRIO e a SENHA.<br>"); $this->CONECTADO = 0; } // Seleção do banco de dados, se falhar é atribuido uma mensagem de erro à variável $ERROS. if (!@mssql_select_db($this->DB)) { $this->addErro("Erro ao selecionar banco de dados. Verifique se o NOME DO BANCO está correto.<br>"); $this->CONECTADO = 0; } $this->printErros(); } function verifyConnection() { if ($this->CONECTADO == 1) { return 1; } else { return 0; } } function query($query) { // Método que executa instruções no SQL Server $this->clearErros(); // Antes de tudo, vamos verificar se a conexão feita no método construtor está ativa ou não if ($this->CONECTADO != 1) { // Se não estiver ativa, teremos que terminar aqui, pois sem conexão nao podemos fazer nada. $this->addErro("Não conectado com o SQL. Use o método ->connect() para conectar.<br>"); $this->printErros(); } else { // Se estive corretamente conectado, teremos que verificar se a instrução é válida, ou seja, não está em branco. if (!$query || $query == "") { $this->addErro("Instrução SQL vazia, tente novamente.<br>"); $this->printErros(); } else { // Se estiver tudo OK, realizaremos a instrução no SQL, e se houver algum erro de sintáxe o próprio SQL irá dizer - Retornando 0 como resultado. $this->QUERY = $query; if (!$this->RESULTADO=@mssql_query($this->QUERY)) { $this->addErro("Não foi possível realizar a(s) instrução(ões) no SQL, verifique a sintaxe e tente novamente.<br>"); $this->printErros(); } } } } function instrucao($query) { // Retorna o array com o resultado da query -- retorna somente o primeiro resultado por não estar em um loop $this->QUERY($query); return @mssql_fetch_array($this->RESULTADO); } function printTable($query) { // Imprime uma tabela completa com os resultados da query $this->query($query); echo "<table border='0' cellpadding='0' cellspacing='0' align='center'>"; echo "<tr>"; for ($i=0; $i < mssql_num_fields($this->RESULTADO); $i++) { echo "<td class='tdTitle' align='center' valign='middel'> " . mssql_field_name($this->RESULTADO, $i) . " </td>"; } echo "</tr>"; $count = 0; while ($linha = mssql_fetch_array($this->RESULTADO)) { echo "<tr>"; for ($i=0; $i < mssql_num_fields($this->RESULTADO); $i++) { if ($count % 2) { echo "<td class='td1'>"; } else { echo "<td class='td2'>"; } echo $linha[$i]; echo "</td>"; } echo "</tr>"; $count++; } echo "</table>"; } } ?>
Conversor de datas para banco de dados
Classe básica de acesso a MySQL pronta para extensões
Formas de trazer dados da consulta utilizando as funções mysql_fetch_array e mysql_fetch_row
Classe de conexão ao banco usando PDO
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Acabei de formatar meu ssd e deu erro (3)
Desempenho abaixo do esperado - travadas e congelamento do sistema ope... (5)
Bash ao invés de Fish no CachyOS (1)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta