Conexão com o MySQL (Dúvida sobre Exception e Connection SQL)

5 respostas
L

Olá pessoal, eu fiz uma classe pra conexão com o mysql, ela funciona certinho. Mas eu tenho umas dúvidas sobre "como ela funciona"...

Esse é o código dela (eu sei que falta o encapsulamento das variaveis de instancia... :shock: vou fazer isso depois :D ):

import java.sql.*;

public class ConectaMySQL {

    // url do banco
    private String url = "jdbc:mysql://localhost:3306/agendabd";

    // usuario
    private String usuario = "root";

    // senha
    private String senha = "123456";

    public void conectar() {
        try {
            Connection conexao = DriverManager.getConnection(url, usuario, senha);
        } catch(SQLException e) {
            System.out.println("Erro na conexão");
        }
    } // fim do metodo conectar

} // fim da classe ConectaMySQL

Minhas dúvidas:

1° - Porque eu preciso importar esse java.sql?
2° - Já que eu importei o java.sql, pra que serve o driver JDBC? (eu seu que essa pergunta é muuuito noob, mas tudo bem :oops: )
3° - Eu sei que o objeto Connection é da classe sql, mas o que ele faz? cria a conexão, certo?
4° e ultima, mas não menos importante - Ali na classe (dentro do catch), eu declarei uma variavel [color=blue]e[/color] do tipo [color=darkred]Exception[/color], qual a função disso?

Seria isso, essas são minhas principais dúvidas em java... mesmo lendo livros, ainda não consegui entender. :cry:

Desculpa a quantidade de questões, ok?

Valeu pessoal!

5 Respostas

aluisiodsv

Opa, vc tem um longo caminho pela frente para aprender.
Então vamos lá. Vou tentar explicar.

1-) Como vc mesmo disse na pergunta 3, a classe Connection é do pacote java.sql, então para usá-la vc precisa importar.

2-) O driver JDBC é uma abstração. Cada banco de dados tem um driver diferente. Isso serve para q vc possa trocar de banco de dados e não mudar nada em sua aplicação, além das configurações, por exemplo a url, usuário e senha do banco de dados.

3-) Certo. É mais ou menos isso q ele faz, entre outras coisas é claro.
Algumas considerações a fazer:

  • não é objeto Connection e sim Classe Connection
  • não é classe sql e sim pacote java.sql
  • o objeto da classe Connection é o conexao

4-) Vc declara essa variável para dentro de seu catch poder usar seus métodos, por exemplo, para ter uma mensagem mais declarativa de sua exceção coloque assim dentro do catch:

System.out.println("Erro " + e.getMessage());
L

aluisiodsv:
Opa, vc tem um longo caminho pela frente para aprender.
Então vamos lá. Vou tentar explicar.

1-) Como vc mesmo disse na pergunta 3, a classe Connection é do pacote java.sql, então para usá-la vc precisa importar.

2-) O driver JDBC é uma abstração. Cada banco de dados tem um driver diferente. Isso serve para q vc possa trocar de banco de dados e não mudar nada em sua aplicação, além das configurações, por exemplo a url, usuário e senha do banco de dados.

3-) Certo. É mais ou menos isso q ele faz, entre outras coisas é claro.
Algumas considerações a fazer:

  • não é objeto Connection e sim Classe Connection
  • não é classe sql e sim pacote java.sql
  • o objeto da classe Connection é o conexao

4-) Vc declara essa variável para dentro de seu catch poder usar seus métodos, por exemplo, para ter uma mensagem mais declarativa de sua exceção coloque assim dentro do catch:

System.out.println("Erro " + e.getMessage());

Poxa cara, valeu por esclarecer minhas dúvidas (e por corrigir meu erros :shock: hehe). Agora que eu parei e observei (com sua ajuda, claro), realmente vi que Connection é a classe, e o conexao é o objeto…

Só mais uma duvida, esse Exception, eu posso colocar em qualquer catch? ou existem outros? como saber qual colocar?

Valeu, tudo de bom pra vc!

aluisiodsv

Exceptions, pelo q eu vejo por aqui, geram muitas dúvidas e uma certa dificuldade.
Recomendo vc pegar um curso básico de java da caelum (www.caelum.com.br). A apostila é disponibilizada gratuitamente lá e é bem didática.

É mais ou menos assim, esta SQLException é lançada por vários motivos, pegando a mensagem dela vc veria o motivo mais exato. Entretanto existem muuitas outras exceções q são lançadas por muitos outros motivos, e todas elas herdam da classe Exception. O legal é vc ir tratando as exceções conforme são lançadas, pq cada exceção gerada tem um tratamento diferente. Se vc der um catch só em Exception, é muito vago e vc deixará de tratar outros motivos de maneiras diferentes. Por exemplo:

Uma exceção lançada pela classe SQLException, pode ter um tratamento exibindo uma mensagem dizendo o q causou o erro, e uma outra exceção qualquer tratada em outro catch fecharia o programa.
Em código seria:

try {
  // código aqui
} catch (SQLException sql) {
  exibeMensagem(sql.getMessage());
} catch (Exception e) {
  e.printStackTrace();
  System.exit();
}
L

Olá amigo, então para realizar a conexão com o BD mysql você precisa utilizar dentro de java.sql.* várias classes,
Connection, sqlException (pois em java quando se trata de BD, precisamos fazer tratamento de erros), futuramente para
navegar entre seus dados e também para poder puxá-los para um formulário, você precisará de um objeto da classe Statement e ResultSet.

Até

RenatoFigueredo

Amigo acredito que suas dúvidas acima foram bem respondida, agora o principal nem menos importante tem que estudar!
Abs!

Criado 9 de setembro de 2010
Ultima resposta 10 de set. de 2010
Respostas 5
Participantes 4