sexta-feira, 30 de julho de 2004

Dica Java - Conexão JDBC

Este código-fonte é clássico. Tem a estrutura fundamental de uma conexão JDBC. As linhas 11 e 12 (sqlserver.java/mysql.java), praticamente determinam qual banco usaremos. Na linha 11 (sqlserver.java/mysql.java), declaramos a biblioteca de estamos utilizando. Já na linha 12, utilizamos informações de conexão com o banco de dados. Evidentemente, devemos possuir para cada conexão, uma biblioteca anexada ao nosso projeto. Quando utilizamos alguma IDE, adicionar uma biblioteca ao projeto torna a compilação e e a execução transparentes no que diz respeito a utilização dessas bibliotecas de conexão JDBC, pois em alguns cliques, informamos ao projeto o caminho da biblioteca e pronto. Basta executar. Porém, quando compilamos/executamos o projeto Java utilizando a linha de comando manualmente ("na munheca"), você deve estar ciente que essas bibliotecas devem estar na lista do classpath. Bom, mas hoje em dia, temos aí o Eclipse, JCreator, Gel, JBuilder, ... que são nossos companheiros não apenas por facilidade, mas como também por necessidade e profissionalismo. Neste artigo, mostrarei dois exemplos de conexões JDBC utilizando os seguintes bancos: MySQL e SQL Server.

Que biblitecas são essas? Geralmente são arquivos .jar, que baixamos na Internet, seja no site original ou não. Eu mesmo baixei as bibliotecas JDBC do HSQLDB e do MySQL por aí pela Internet. Eu estava ciente de que estava baixando os oficiais, mas isso não queria dizer que estava baixando do site oficial. Já o do SQL Server/MSDE, eu baixei no site da Microsoft. O site da Sun, divulga estas listas, porém percebo que são bibliotecas de terceiros, que estão aptas a trabalhar com vários bancos. Gosto dos originais, portanto não vou atrás dessas bibliotecas de terceiros, apesar de possuírem qualidade. Já que utilizaremos os bancos MySQL e SQL Server neste artigo, vou disponibilizar as bibliotecas que utilizei nesses dois códigos-fonte.

Biblioteca do MySQL: mysql-connector-java-3.0.11-stable-bin.jar
Biblioteca do SQL Server: msbase.jar, mssqlserver.jar, msutil.jar




Início do arquivo sqlserver.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

public class main {

   public static void main(String[] args) {
      java.sql.Connection conConexao = null;
      java.sql.Statement stmInstrucao = null;
      java.sql.ResultSet rsQuery = null;

      try {

         Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
         conConexao = java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://LEONARDO","sa","");
         stmInstrucao = conConexao.createStatement();
         rsQuery = stmInstrucao.executeQuery("SELECT name FROM sysobjects WHERE type='U'");

         //Imprime na tela o conteúdo do campo "name" da query
         while (rsQuery.next()) {
            System.out.println(rsQuery.getString("name"));
         }

         stmInstrucao.close();
         conConexao.close();

      } catch (java.sql.SQLException exc1) {
         //Este tratamento de exceção é obrigatório (throws)
         System.out.println("SQLException: " + exc1.getMessage());

      } catch (java.lang.ClassNotFoundException exc2) {
         //Este tratamento de exceção é obrigatório (throws)
         System.out.println("ClassNotFoundException: " + exc2.getMessage());

      }

   }

}

Fim do arquivo sqlserver.java



Início do arquivo mysql.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

public class main {

   public static void main(String[] args) {
      java.sql.Connection conConexao = null;
      java.sql.Statement stmInstrucao = null;
      java.sql.ResultSet rsQuery = null;

      try {

         Class.forName("com.mysql.jdbc.Driver");
         conConexao = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/bancoteste","root","leo");
         stmInstrucao = conConexao.createStatement();
         rsQuery = stmInstrucao.executeQuery("SELECT * FROM tabelausuarios");

         //Imprimindo na tela o conteúdo dos campos "nome" e "email"
         while (rsQuery.next()) {
            System.out.println(rsQuery.getString("nome") + " - " + rsQuery.getString("email"));
         }

         stmInstrucao.close();
         conConexao.close();

      } catch (java.sql.SQLException exc1) {
         //Este tratamento de exceção é obrigatório (throws)
         System.out.println("SQLException: " + exc1.getMessage());

      } catch (java.lang.ClassNotFoundException exc2) {
         //Este tratamento de exceção é obrigatório (throws)
         System.out.println("ClassNotFoundException: " + exc2.getMessage());

      }

   }

}

Fim do arquivo mysql.java