Conectando e manipulando SQL com uma conexão global para qualquer Banco de
Dados / Driver de gerenciadores que seguem o padrão ODBC(Open Database
Connectivity). Usando apenas recursos necessários para realizar a interação.
Vamos lá!
Requerimentos:
- Conhecimento básico de SQL
- Conhecimento básico em C# Sharp
(ou Java)
- Orientação de
Objetos(import/classes/métodos/funções).
- Usar uma IDE
(SharpDevelop/Visual Studio)
- Gerenciador SQL
ativado(Service) no Sistema para conectar a servidor localhost (Estou
usando o MySQL do XAMPP).
Recomendações:
- NET Framework 4.0
- SharpDevelop 4
- Windows 7/8 ou 10
- XAMPP
- Ativando o MySQL no Sistema Operacional para gerenciar dados SQL:
![]() |
Ativando o Apache e o MySQL no XAMPP |
- Criando um novo projeto "Solução" em SharpDevelop 4 > Files > New Solution > C# > NET Framework 4.0/Applcation Console...
![]() |
Criando Projeto no SharpDevelop 4 |
- Após criar...
![]() |
Pineira interface criada pelo modelo (Já configurado por mim) |
- Vamos apagando o que for desnecessário do modelo pré definido... Até ficar assim (pode copiar, é código):
- Observe que eu estou usando um tema Monokai e o seu deve ser o padrão ou diferente.
using System; using System.Data.Odbc; //by Luiz R. namespace ConectODBC { class Program { public static void Main(string[] args) { try{ }catch(Exception){ } Console.ReadKey(true); } } }
- Observe que eu acrescentei using System.Data.Odbc; que é uma importação padrão,
- Try/Catch será altamente importante porque o programa vai tentar executar dentro do bloco try, se ocorrer um erro fatal o programa não vai mostrar bugs nem travamentos, ele vai dar catch e dizer que ocorreu um problema. Exeption pode ser incrementada com uma variável pra armazenar o erro ex: (Exception Err), Err vai ser a variavel.
- Também temos o comando Console.ReadKey(true); para manter o console e ele não fechar rapidamente após as execuções.
using System; using System.Data.Odbc; //by Luiz R. namespace ConectODBC { class Program { public static void Main(string[] args) { try{ OdbcConnection conn = new OdbcConnection("" + "Driver={MySQL ODBC 5.3 ANSI Driver};" + "server=localhost;" + "uid=root;" + "pwd=root;" + "Option=2"); conn.Open(); OdbcCommand sql = conn.CreateCommand(); Console.WriteLine("ODBC Conectado com sucesso..."); /* TUDO daki pra baixo você faz o que quiser em SQL antes de dar Close(); */ conn.Close(); }catch(Exception){ Console.WriteLine("Erro ao tentar conectar ao ODBC"); } Console.ReadKey(true); } } }
- Criei um objeto(conn) que estabeleceu uma conexão com meu gerenciador SQL(MySQL) através do Driver={MySQL ODBC 5.3 ANSI Driver}; usando a String "Driver={MySQL ODBC 5.3 ANSI Driver};server=localhost;uid=root;pwd=root;Option=2" para MySQL.
Não Testados:
- A única diferença está na ai, por exemplo para SQL Server a string poderia ficar assim: "DRIVER=SQL Server Native Client 11.0;Trusted_Connection=Yes;SERVER=(localdb)\v11.0;Description=LocalDB;" Ou depende mo método de conexão se é via server host
- Microsoft Access "Driver={Microsoft Access Driver(*.mdb, *.accdb)};DBQ=C:\\Users\\Administrator\\Desktop\\New folder\\MatchDetails.accdb;"
Após isso, você abre Open(); e cria um outro objeto que vou chamar de sql para finalmente executar os comandos SQL. Observe que você manipula os comandos SQL através de CommandText e executa sempre com ExecuteNonQuery(); Se for para ler você substitui por ExecuteReader(); através de um looping para poder obter dados da matriz table.
using System; using System.Data.Odbc; //by Luiz R. namespace ConectODBC { class Program { public static void Main(string[] args) { try{ OdbcConnection conn = new OdbcConnection("" + "Driver={MySQL ODBC 5.3 ANSI Driver};" + "server=localhost;" + "uid=root;" + "pwd=root;" + "Option=2"); conn.Open(); OdbcCommand sql = conn.CreateCommand(); //CRIANDO BANCO DE DADOS "TESTE" NO GERENCIADOR MYSQL try{ sql.CommandText = "DROP DATABASE IF EXISTS TESTE;"; sql.ExecuteNonQuery(); sql.CommandText = "CREATE DATABASE IF NOT EXISTS TESTE;"; sql.ExecuteNonQuery(); sql.CommandText = "USE TESTE;"; sql.ExecuteNonQuery(); Console.WriteLine("Banco de dados criado com sucesso..."); }catch(Exception){ Console.WriteLine("Erro ao tentar criar banco de dados."); } //CRIANDO TABELA "LOGIN" SE NÃO EXISTIR NO GERENCIADOR MYSQL/TESTE/? try{ sql.CommandText = "CREATE TABLE IF NOT EXISTS LOGIN(" + "ID INT AUTO_INCREMENT PRIMARY KEY NOT NULL," + "NICK VARCHAR(15) NOT NULL," + "SENHA INT NOT NULL)"; sql.ExecuteNonQuery(); Console.WriteLine("Tabela criada com sucesso..."); }catch(Exception){ Console.WriteLine("Erro ao tentar criar tabela."); } //INSERINDO DADOS NO MYSQL/TESTE/LOGIN try{ sql.CommandText= "INSERT INTO LOGIN (NICK,SENHA) VALUES ('Dark',123456)"; sql.ExecuteNonQuery(); Console.WriteLine("Dados inseridos com sucesso..."); }catch(Exception){ Console.WriteLine("Erro ao tentar inserir dados."); } //IMPRIMINDO DADOS DA TABELA MYSQL/TESTE/LOGIN... NO CONSOLE :P try{ sql.CommandText = "SELECT * FROM LOGIN;"; OdbcDataReader get = sql.ExecuteReader(); while (get.Read()){ string dados = ""; for (int i = 0; i < get.FieldCount; i++) dados += get.GetValue(i).ToString() + ", "; Console.WriteLine(dados); } }catch(Exception){ Console.WriteLine("Erro ao tentar imprimir dados."); } conn.Close(); }catch(Exception){ Console.WriteLine("Erro ao tentar conectar ao ODBC"); } Console.ReadKey(true); } } }
![]() |
Console do C# após executar o código acima. |
- Vamos confirmar no gerenciador:
![]() |
Verificação do Gerenciador via Apache http://localhost/phpmyadmin/ |
- OBS: O conector http://dev.mysql.com/downloads/connector/net/ adiquirido no site do MySQL não precisa do ODBC e torna mais rápido as conexões e execuções. O próximo será fazendo com conector MySQL.
- Também será feito um tutorial semelhante para Java, em breve!
- XAMPP download https://www.apachefriends.org/pt_br/download.html
- SharpDevelop 4 download http://www.icsharpcode.net/OpenSource/SD/Download/#SharpDevelop4x
Até mais!! ;D
0 comentários:
Postar um comentário