[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!
[code]import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mysql.jdbc.Statement;
import java.sql.*;
public class Conexao{
public Connection conectar(){
// base de dados é “test”
String url = “jdbc:mysql://localhost:3306/escola”;
String usuario = “root”;
String senha = “”;
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection(url, usuario,
senha);
return conn;
}
catch(SQLException ex){
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
return null;
}
catch(Exception e){
System.out.println("Problemas ao tentar conectar com o banco de dados: " + e);
return null;
}
Statement stm = con.createStatement();
String SQL = "Select mat,nome from alunos";
ResultSet rs = stm.executeQuery(SQL);
while(rs.next())
{
int mat = rs.getInt("mat");
String nome = rs.getString("nome");
System.out.println("mat: "+mat+" nome: "+nome);
Ele esta apresentando algum erro?
Eu também sou novata, mas ja “briguei” muito com conexões e select´s e talvez possa te ajudar!
[/quote]
Sim amigão está apresentando erro na linha 30.
Statement stm = con.createStatement(); [/code]
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 = [b]conn.[/b]createStatement();
e ele TEM que estar dentro do try-catch
a ordem seria +- assim:
[code]< imports >
public class xxx{
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 (exeption e ){
// 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…
Statement stm = con.createStatement(); [/code]
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 = [b]conn.[/b]createStatement();
e ele TEM que estar dentro do try-catch
a ordem seria +- assim:
[code]< imports >
public class xxx{
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 (exeption e ){
// 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…
[/quote]
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
[b][color=red][/color][size=18][/size][quote=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!
[code]import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mysql.jdbc.Statement;
import java.sql.*;
public class Conexao{
public Connection conectar(){
// base de dados é “test”
String url = “jdbc:mysql://localhost:3306/escola”;
String usuario = “root”;
String senha = “”;
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection(url, usuario,
senha);
return conn;
}
catch(SQLException ex){
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
return null;
}
catch(Exception e){
System.out.println("Problemas ao tentar conectar com o banco de dados: " + e);
return null;
}
Statement stm = con.createStatement();
String SQL = "Select mat,nome from alunos";
ResultSet rs = stm.executeQuery(SQL);
while(rs.next())
{
int mat = rs.getInt("mat");
String nome = 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!!
Statement stm = 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:
......
public class Conexao{
// coloca aqui na classe os atributos e não dentro do metodo!!!
String url = "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, //aqui o atributo conexão da classe recebe a conexão com o banco
senha);
}
.....
.....