Classe para trabalhar com SQL Server
Publicado por Vinicus S Moraes 05/07/2008
[ Hits: 8.843 ]
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>";
}
}
?>
Função para criação de grid (tabela) dinâmico
Script Para Conectar-se Ao Banco de dados PostGreSQL [golfinho/Elefante]
Sistema que simula bd com arquivo TXT
Classe eveQuery: Interação com banco de dados
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (0)
Secure boot, artigo interessante, nada técnico. (5)
VOL já não é mais como antes? (9)
É normal não gostar de KDE? (13)
E aí? O Warsaw já está funcionando no Debian 13? [RESOLVIDO] (15)









