Estou estudando java pelo Deitel e copiando um de seus exemplos de conexão com o banco de dados o meu net beans acusou dois erros na classe.
packagesrc;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.ResultSetMetaData;importjava.sql.SQLException;importjava.sql.Statement;publicclassDispalysAuthors{//nome do Driver JDBC e URL do banco de dadosstaticfinalStringJDBC_DRIVER="com.mysql.jdbc.Driver";staticfinalStringDDATABASE_URL="jdbc:mysql://localhost/books";//carrega o aplicativopublicstaticvoidmain(String[]args){//gerencia a conecçãoConnectionconnection=null;//instrução de consultaStatementstatement=null;//conecta-se com o banco de dados e o consultatry{//carrega a classe de drive do banco de dadosClass.forName(JDBCDRIVER);//estabelece conexão com o banco de dadosconnection=DriverManager.getConnection(DATABASEURL,"root","25quadra");//cria statement para consultar bancoo de dadosstatement=connection.createStatement();//consulta o banco de dadosResultSetresultSet=statement.executeQuery("SELECT authorId, firstname, lastName FROM authors;");//processa o resultados da consultaResultSetMetaDatametaData=resultSet.getMetaData();intnumberOfColumns=metaData.getColumnCount();System.out.println("Authors table of books database");for(inti=1;i<=numberOfColumns;i++)System.out.printf("%-8\t",metaData.getColumnName(i));System.out.println();while(resultSet.next()){for(inti=1;i<=numberOfColumns;i++)System.out.printf("%-8s\t",resultSet.getObject(i));System.out.println();}//fim do while}//fim do trycatch(SQLExceptionsqlexception){sqlexception.printStackTrace();System.exit(1);}//fim do catch//assegura que a instrução e conecção sejam fechadas adequadamentefinally{try{statement.close();connection.close();}//fim do trycatch(Exceptionexception){exception.printStackTrace();System.exit(1);}//fim do catch}//fim do finally}//fim do método main}//fim da classe displayAuthors
Os erros acusados estão nas linhas 28 e 31, será que alguém pode me ajudar, muito obrigado
Cara, tu colocou as variáveis sem o _ (underline)
e tuu delcarou com o underline
staticfinalStringJDBC_DRIVER="com.mysql.jdbc.Driver";staticfinalStringDDATABASE_URL="jdbc:mysql://localhost/books";//carrega o aplicativo publicstaticvoidmain(String[]args){//gerencia a conecção Connectionconnection=null;//instrução de consulta Statementstatement=null;//conecta-se com o banco de dados e o consulta try{//carrega a classe de drive do banco de dados Class.forName(JDBC_DRIVER);//esqueceu _ aqui//estabelece conexão com o banco de dados connection=DriverManager.getConnection(DATABASE_URL,"root","25quadra");//e aqui também
robert.gamma
andre.froes:
Cara, tu colocou as variáveis sem o _ (underline)
e tuu delcarou com o underline
staticfinalStringJDBC_DRIVER="com.mysql.jdbc.Driver";staticfinalStringDDATABASE_URL="jdbc:mysql://localhost/books";//carrega o aplicativo publicstaticvoidmain(String[]args){//gerencia a conecção Connectionconnection=null;//instrução de consulta Statementstatement=null;//conecta-se com o banco de dados e o consulta try{//carrega a classe de drive do banco de dados Class.forName(JDBC_DRIVER);//esqueceu _ aqui//estabelece conexão com o banco de dados connection=DriverManager.getConnection(DATABASE_URL,"root","25quadra");//e aqui também
De acordo com a imagem postada, o erro é causado pelo, espaço entre: JDBC_ e DRIVER. O correto é: JDBC_DRIVER.
Aproveitando o exercicio, já postado, qual a finalidade de usar a sintaxe:
static final String JDBC_DRIVER = “com.mysql.jdbc.Driver”;
Ficou claro ser uma declaração, porém não entendi a finalidade do: static final
[]s
aajjbb
eu nao sou nenhum expert, tenho o deitel e tudo, mas nao seria mais facil, criar uma factory de conecções?
aajjbb
tipo isso
importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;publicclassConnectionFactory{publicConnectiongetConnetion(){System.out.println("Conectando ao Banco");try{returnDriverManager.getConnection("jdbc:mysql://localhost/fj21","root","");}catch(SQLExceptione){thrownewRuntimeException(e);}}}
mirrah
gente, eu falei com um professor meu do curso que estou fazendo e ele disse que o Class.forName era desnecessário. Tirei ele e deu o seguinte erro:
Pelo que eu entendi ele não está achando do Driver do MySql…você colocou dentro do projeto?
mirrah
o mais bizarro é que eu coloquei. eu ainda fui no local para add bibliotecas no net beans e já tinha o driver eu excluia e add de novo. Mandava o projeto rodar e o mesmo erro.
AndreSorge
Ou manu, não sei se tem alguma coisa ha ver…
mas no seu código na URL de conexão…
jdbc:mysql://localhost:3306/books
Essa porta que você está colocando…tira ela…deixa assim:>
jdbc:mysql://localhost/books
Tenta, qualquer coisa você posta e agente tenta te ajudar…abraços e boa sorte
mirrah
cara, eu fiz o que estava proposto acima e continuou o mesmo erro, será que é a versão do meu JDBC? por que de acordo o meu professor o meu JDBC é meio antigo, vamos diser assim.
KaosBr
Boa noite,
Posta o erro ara podemos dar uma olhada. E se possivel o novo código que está compilando, após eventuais ajustes.
[]s
pliniobota
publicclassConexaoDao{privateConnectionconexao;/** Creates a new instance of ConexaoDao */publiccom.mysql.jdbc.ConnectionConexaoComOBancoDeDados()throwsClassNotFoundException,SQLException{Class.forName("com.mysql.jdbc.Driver");StringstringConexao="jdbc:mysql://localhost:3306/projeto";conexao=DriverManager.getConnection(stringConexao,"root","");return(com.mysql.jdbc.Connection)conexao;}publicstaticvoidmain(String[]args){newConexaoDao();}}
Você está usando o Class.forName("")? Ele é necessário nesse caso.
E você tem certeza mesmo que o driver do MySQL está no classpath do seu projeto?
mirrah
exemplo do deitel atualizado
packagesrc;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.ResultSetMetaData;importjava.sql.SQLException;importjava.sql.Statement;publicclassDispalysAuthors{//nome do Driver JDBC e URL do banco de dadosstaticfinalStringJDBC_DRIVER="com.mysql.jdbc.Driver";staticfinalStringDATABASE_URL="jdbc:mysql://localhost/books";//carrega o aplicativopublicstaticvoidmain(String[]args){//gerencia a conecçãoConnectionconnection=null;//instrução de consultaStatementstatement=null;//conecta-se com o banco de dados e o consultatry{//estabelece conexão com o banco de dadosconnection=DriverManager.getConnection(DATABASE_URL,"root","25quadra");//cria statement para consultar bancoo de dadosstatement=connection.createStatement();//consulta o banco de dadosResultSetresultSet=statement.executeQuery("SELECT authorId, firstname, lastName FROM authors;");//processa o resultados da consultaResultSetMetaDatametaData=resultSet.getMetaData();intnumberOfColumns=metaData.getColumnCount();System.out.println("Authors table of books database");for(inti=1;i<=numberOfColumns;i++)System.out.printf("%-8\t",metaData.getColumnName(i));System.out.println();while(resultSet.next()){for(inti=1;i<=numberOfColumns;i++)System.out.printf("%-8s\t",resultSet.getObject(i));System.out.println();}//fim do while}//fim do trycatch(SQLExceptionsqlexception){sqlexception.printStackTrace();System.exit(1);}//fim do catch//assegura que a instrução e conecção sejam fechadas adequadamentefinally{try{statement.close();connection.close();}//fim do trycatch(Exceptionexception){exception.printStackTrace();System.exit(1);}//fim do catch}//fim do finally}//fim do método main}//fim da classe displayAuthors
erro que dá ao executar o codigo acima no net beans 6.8
Novamente: o erro de “No suitable driver found” acontece quando o driver não está presente no classpath. Ainda acredito que esse seja o erro.
Outra coisa: sempre que for usar um “close()” em um bloco finally, você deve verificar se o objeto é diferente de null (para não causar um NullPointerException). Por exemplo: