Banco de dados

6 respostas
rpgigor

Bem pessoal, mais uma vez eu estou me atrapalhando todo com a conexão do driver JDBC com o banco... Eis o problema:
-Após uma terrível noite de sono comecei a ler os artigos do guj sobre BD... Aprendi o que era necessário de mySQL, quando estava tudo pronto para o meu primeiro contato do mySQL com minha aplicação, tudo dando errado... O problema inicialmente talvez por eu não ter visto um código para me basear...

Dúvidas:
-Me falaram que devo por o driver no classpath da aplicação... Bem, eu faço isso com o netBeans? o que exatamente é o classpath "da aplicação" *Dúvida de noob, eu sei*

-Meus "Imports"
no caso, eu usando "mySQL", esses são os imports corretos? Pergunto isso por o NetBeans as vezes me manda fazer um cast no Connection.

-por ultimo, Uma divisão dessas coisas em métodos, seria como? Um método de conexão? outro de inserção? Que por sua vez chamaria o de conexão dentro dele? E toda vez que eu precisasse fazer alguma operação no banco eu precisasse fazer uma conexão?

package br.edu.ifce.bd.crud;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;



/**
 *
 * @author IgorJava()
 */
public class AltosTestes {
    
    public static void main(String[] args){
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException ex) {
            System.out.println("Erro");
        }
        try {
            //Esse getConnection com essa url está certa?
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/filmes", "root", "igor");
        } catch (SQLException ex) {
            System.out.println("Erro na conexão");
            
        }
        //O ERRO ESTÁ NESSA LINHA ABAIXO ele me diz que não existe nenhum st =S
        Statement st=conn.createStatement();
        st.executeUpdate("");
    }

Eu sei que estou cheio de dúvidas idiotas, que da é vontade de me mandar ler a apostila de novo... O problema é que eu sempre me deparo com essas mesmas dúvidas, já que muitas vezes nas apostilas eles não especificam os imports e a forma em métodos que eu posso implementar um BD, sempre vejo da forma estruturada... Agradecido desde já... >_<

6 Respostas

xxjamisxx

vc esta tentado executar um Statement sem dizer o que ele vai fazer
por exemplo inserir

public class Conexao {
  
	 private static  String Driver = "com.mysql.jdbc.Driver";
     private static  String URL = "jdbc:mysql://localhost/Cadastro"; 
     private static String  senha ="tessaiga";
     private static String  login="root";
    
     public static Connection getconnection()
     {
    
    	try {
    		  Class.forName(Driver); 
    		   return   DriverManager.getConnection(URL,login,senha);
    				
    		   }
    		   catch (SQLException e)
    		   {
    			   JOptionPane.showMessageDialog(null,"erro de sql");
    			   return null;
    		   }
    	      catch (ClassNotFoundException e)
    	      {
    	      JOptionPane.showMessageDialog(null,"ploblemas com parametro de conexao");
    	      return null; 
    	      }
    	   }   
    	}

faz asssim e na outra classe vc so chama o getconnection e coloca no statment
mais eu acho melhor o preparedstament

igor_jua

Amigo pelo visto, você ainda não esta apto a desenvolver com BD na prática.
Seria mais fácil se você procurasse entender como se faz a conexão na teoria e depois partir para a prática.

No site apostilando.com você encontra vários materiais totalmente gratis que falam sobre o assunto.
Tendo a teoria estudada ficará mais simples de você fazer a conexão.

Em relação ao drivers no net beans, ao criar seu projeto dentro dele haverá uma pasta ou pacote (como queira chamar) de nome Bibliotecas. Clique nela com o bt direito do mouse e selecione a opção de Adicionar jar/pasta… e selecione os respectivos arquivos .jar que você necessita em seu projeto.

yoshikichi
rpgigor:
Bem pessoal, mais uma vez eu estou me atrapalhando todo com a conexão do driver JDBC com o banco... Eis o problema: -Após uma terrível noite de sono comecei a ler os artigos do guj sobre BD... Aprendi o que era necessário de mySQL, quando estava tudo pronto para o meu primeiro contato do mySQL com minha aplicação, tudo dando errado... O problema inicialmente talvez por eu não ter visto um código para me basear...

Dúvidas:
-Me falaram que devo por o driver no classpath da aplicação... Bem, eu faço isso com o netBeans? o que exatamente é o classpath "da aplicação" *Dúvida de noob, eu sei*

-Meus "Imports"
no caso, eu usando "mySQL", esses são os imports corretos? Pergunto isso por o NetBeans as vezes me manda fazer um cast no Connection.

-por ultimo, Uma divisão dessas coisas em métodos, seria como? Um método de conexão? outro de inserção? Que por sua vez chamaria o de conexão dentro dele? E toda vez que eu precisasse fazer alguma operação no banco eu precisasse fazer uma conexão?

package br.edu.ifce.bd.crud;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;



/**
 *
 * @author IgorJava()
 */
public class AltosTestes {
    
    public static void main(String[] args){
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException ex) {
            System.out.println("Erro");
        }
        try {
            //Esse getConnection com essa url está certa?
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/filmes", "root", "igor");
        } catch (SQLException ex) {
            System.out.println("Erro na conexão");
            
        }
        //O ERRO ESTÁ NESSA LINHA ABAIXO ele me diz que não existe nenhum st =S
        Statement st=conn.createStatement();
        st.executeUpdate("");
    }

Eu sei que estou cheio de dúvidas idiotas, que da é vontade de me mandar ler a apostila de novo... O problema é que eu sempre me deparo com essas mesmas dúvidas, já que muitas vezes nas apostilas eles não especificam os imports e a forma em métodos que eu posso implementar um BD, sempre vejo da forma estruturada... Agradecido desde já... >_<

E ai? Se eu tenho um bloco qualquer:
//imaginamos um metodo
public void metodoqlq(){
int a;
//coloco um bloco
{
a++; // isso é valido
String variavel = "dentro do bloco";
}

System.out.println(variavel); // não é valido, pq a variavel só existira dentro do bloco a cima.
}

Sua conexão só existe enquanto try estiver ativo.

DE uma olhada na apostila da Caelum, FJ21. ww.caelum.com.br
vai ser melhor para ti

ctosin

O classpath da aplicação indica quais classes serão carregadas junto com as classes da sua aplicação. Além de carregar suas próprias classes, você deve carregar também as classes presentes no JAR onde está o driver do banco de dados, senão o Java não vai conseguir carregá-las. No Netbeans você pode fazer isso clicando com o botão direito no projeto -> Properties -> Libraries.

Todos os imports de JDBC são do pacote javax.sql.

É interessante que você siga um padrão como o DAO (procure na internet mais informações sobre este design pattern). Ele proporciona que você tenha uma camada de acesso a dados na sua aplicação. No DAO normalmente você tem métodos diferentes para inserção, consulta, exclusão, etc.

rpgigor

Putz, serviu…
Vlw mesmo… Mas tipo assim, os imports são basicamente quais, e os métodos CRUD(Create,read,update,remove), alguma dica ou conselho?

agradecido… :slight_smile:

ctosin

Sobre os métodos CRUD, normalmente você tem um método para cada tipo de operação. Por exemplo: create(), find() (que busca por chave primária), update() e delete(). Você pode ter outros métodos também com base em selects mais específicos da sua aplicação. Enfim, o importante é manter os métodos de forma que eles tenham apenas uma responsabilidade, ao mesmo tempo que você deve evitar a duplicação de código. Usar herança para reaproveitar métodos em DAOs diferentes também é uma boa abordagem.

Sobre o pattern DAO (Data Access Object) que eu mencionei antes, este link é interessante (é um material oficial da Sun):
http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html

Uma dica que eu dou para você é para que você tome cuidado com o seu objeto de conexão com o banco de dados. É interessante que você, ao abrir uma conexão, reaproveite o mesmo objeto entre várias chamadas ao banco (ou chamadas aos DAOs, se você usar este pattern). E nunca se esqueça de fechar a conexão (ou devolvê-la ao pool se você estiver usando um). A conexão com o banco é um recurso importante e finito, portanto deve ser bem cuidado.

Abraço!

Criado 29 de abril de 2010
Ultima resposta 29 de abr. de 2010
Respostas 6
Participantes 5