[color=red][/color]Galera o negocio é o seguinte estou tentando buscar informações no BD, porém não estou conseguindo, alguem ai pode dar uma olhada no código e me falar onde estou errando
Lembrando que a conexão com o banco MySql já foi executada.
Aguardo resposta!
Desde já agradeço a todos!
importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importcom.mysql.jdbc.Statement;importjava.sql.*;publicclassConexao{publicConnectionconectar(){// base de dados é "test"Stringurl="jdbc:mysql://localhost:3306/escola";Stringusuario="root";Stringsenha="";try{Class.forName("com.mysql.jdbc.Driver").newInstance();Connectionconn=DriverManager.getConnection(url,usuario,senha);returnconn;}catch(SQLExceptionex){System.out.println("SQLException: "+ex.getMessage());System.out.println("SQLState: "+ex.getSQLState());System.out.println("VendorError: "+ex.getErrorCode());returnnull;}catch(Exceptione){System.out.println("Problemas ao tentar conectar com o banco de dados: "+e);returnnull;}Statementstm=con.createStatement();StringSQL="Select mat,nome from alunos";ResultSetrs=stm.executeQuery(SQL);while(rs.next()){intmat=rs.getInt("mat");Stringnome=rs.getString("nome");System.out.println("mat: "+mat+" nome: "+nome);}}}
voce meio que vamos dizer "cria" um canal de comunicacao para envio de mensagens com a conexao do BD (alguem me corrija se eu estiver errado)
pois bem... voce cria um canal (stm ) EM CIMA da conexao (conn).... entao o codigo seria Statement stm = conn.createStatement();
e ele TEM que estar dentro do try-catch
a ordem seria +- assim:
<imports>publicclassxxx{try{// criaçao da conexao// criaçao do canal, em cima do OBJETO da conexao// regra de negocio// fechamento do canal// fechamento da conexao (obrigatoriamente nessa ordem, voce nao pode fechar a porta do seu quarto depois de ja ter fechado a casa )}catch(exeptione){// tratamento das execoes}}
lembre-se tudo dentro do try-catch.
DICA: faça uns hello words de conexao com BD, a internet ta cheia cheia cheia de hello words disso.... :wink:
voce meio que vamos dizer "cria" um canal de comunicacao para envio de mensagens com a conexao do BD (alguem me corrija se eu estiver errado)
pois bem... voce cria um canal (stm ) EM CIMA da conexao (conn).... entao o codigo seria Statement stm = conn.createStatement();
e ele TEM que estar dentro do try-catch
a ordem seria +- assim:
<imports>publicclassxxx{try{// criaçao da conexao// criaçao do canal, em cima do OBJETO da conexao// regra de negocio// fechamento do canal// fechamento da conexao (obrigatoriamente nessa ordem, voce nao pode fechar a porta do seu quarto depois de ja ter fechado a casa )}catch(exeptione){// tratamento das execoes}}
lembre-se tudo dentro do try-catch.
DICA: faça uns hello words de conexao com BD, a internet ta cheia cheia cheia de hello words disso.... :wink:
Amigão valeu ai pela dica, era esse o problema!
LPJava
se o erro está na linha 30 é pq ele nao está encontrando a variavel con, vc criou uma variavel con dentro do bloco try{} como quer acessa-la fora desse contexto?
Veja esse aqui um exemplo parecido com o seu, link
flw!
daniellfeijo
lincolnalberto,
tenta isso…
tira isso do seu codigo
Statementstm=con.createStatement();StringSQL="Select mat,nome from alunos";ResultSetrs=stm.executeQuery(SQL);
e coloca assim…
Stringsql="Select mat,nome from alunos";PreparedStatementstm=con.prepareStatement(sql);ResultSetrs=stm.executeQuery()
acho que isso resolve…
abraço…
L
lincolnalberto
[b][color=red][/color][size=18][/size]
lincolnalberto:
Galera o negocio é o seguinte estou tentando buscar informações no BD, porém não estou conseguindo, alguem ai pode dar uma olhada no código e me falar onde estou errando
Lembrando que a conexão com o banco MySql já foi executada.
Aguardo resposta!
Desde já agradeço a todos!
importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importcom.mysql.jdbc.Statement;importjava.sql.*;publicclassConexao{publicConnectionconectar(){// base de dados é "test"Stringurl="jdbc:mysql://localhost:3306/escola";Stringusuario="root";Stringsenha="";try{Class.forName("com.mysql.jdbc.Driver").newInstance();Connectionconn=DriverManager.getConnection(url,usuario,senha);returnconn;}catch(SQLExceptionex){System.out.println("SQLException: "+ex.getMessage());System.out.println("SQLState: "+ex.getSQLState());System.out.println("VendorError: "+ex.getErrorCode());returnnull;}catch(Exceptione){System.out.println("Problemas ao tentar conectar com o banco de dados: "+e);returnnull;}Statementstm=con.createStatement();StringSQL="Select mat,nome from alunos";ResultSetrs=stm.executeQuery(SQL);while(rs.next()){intmat=rs.getInt("mat");Stringnome=rs.getString("nome");System.out.println("mat: "+mat+" nome: "+nome);}}}
depois usa con na linha abaixo se referindo a conexão!! tá faltando um um n!! é conn!! tá estranho!!
Statementstm=con.createStatement();
quer minha opnião? Porque você não coloca os atributos dentro classse e não do metódo?
depois muda seu metodo para sem retorno “void” e faz o seguinte:
......publicclassConexao{//colocaaquinaclasseosatributosenãodentrodometodo!!!Stringurl="jdbc:mysql://localhost:3306/escola"; String usuario = "root"; String senha = ""; Connection conn; // coloca a conexão como atributo da classe tambem!! public void conectar(){ try{ Class.forName("com.mysql.jdbc.Driver").newInstance();conn=DriverManager.getConnection(url,usuario,//aquioatributoconexãodaclasserecebeaconexãocomobancosenha);}..........
depois muda muda lá em no statement
...StringSQL="Select mat,nome from alunos";PreparedStatementstm=conn.prepareStatement(SQL);ResultSetrs=stm.executeQuery();......