Caros,
o código abaixo é de uma pequena aplicação java desktop, que tem por base fazer a conexão com um banco de dados mysql e inserir os dados que estão do jTextField 1 e 2 na tabela chamada usuario dentro do db oi.
Connection con = null;
try
{
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://10.20.194.170:3306/oi","usuario1","");
Statement stm = con.createStatement();
stm.executeUpdate("insert into usuario values('"+jTextField1.getText()+"','"+jTextField2.getText()+"');");
JOptionPane.showMessageDialog(null,"Dados Cadastrados com sucesso.","Oi. Simples assim!",JOptionPane.INFORMATION_MESSAGE);
jLabel1.setText(jTextField1.getText());
jLabel2.setText(jTextField2.getText());
jTextField1.setText("");
jTextField2.setText("");
}catch(SQLException e){
e.printStackTrace(); //vejamos que erro foi gerado e quem o gerou
JOptionPane.showMessageDialog(null,"Erro na conexão, com o banco de dados 1! \n" + e.getMessage()+"\n"+e.getCause()+"\n" + e.getSQLState() + "\n" +e.getErrorCode(),"Oi. Simples assim!",JOptionPane.WARNING_MESSAGE);
}catch (ClassNotFoundException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null,"Erro na conexão, com o banco de dados 2! \n"+e.getMessage() +"\n"+ e.getCause()+"\n"+e.getException(),"Oi. Simples assim!",JOptionPane.WARNING_MESSAGE);
}finally {
try{
con.close();
}catch(SQLException onConClose){
JOptionPane.showMessageDialog(null,"Erro na conexão, com o banco de dados 3!","Oi. Simples assim!",JOptionPane.WARNING_MESSAGE);
//System.out.println("Houve erro no fechamento da conexão");
onConClose.printStackTrace();
}
}
o erro que retorna é o seguinte:
“Erro na conexão, com o banco de dados 2!” (a mensagem que eu escrevi, caso ocorresse algum erro)
com.mysql.jdbc.Driver
null
null
todo o código de erro gerado após a tentativa da conexão com banco de dados mysql é o seguinte abaixo:
run:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
Last packet sent to the server was 0 ms ago.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:539)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2103)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:718)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:539)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
at java.sql.DriverManager.getConnection(DriverManager.java:620)
at java.sql.DriverManager.getConnection(DriverManager.java:200)
at rafael.rafael2.jButton1MouseClicked(rafael2.java:82)
at rafael.rafael2.access$000(rafael2.java:6)
at rafael.rafael2$1.mouseClicked(rafael2.java:33)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270)
at java.awt.Component.processMouseEvent(Component.java:6120)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3293)
at java.awt.Component.processEvent(Component.java:5882)
at java.awt.Container.processEvent(Container.java:2101)
at java.awt.Component.dispatchEventImpl(Component.java:4477)
at java.awt.Container.dispatchEventImpl(Container.java:2159)
at java.awt.Component.dispatchEvent(Component.java:4303)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4595)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4267)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4188)
at java.awt.Container.dispatchEventImpl(Container.java:2145)
at java.awt.Window.dispatchEventImpl(Window.java:2559)
at java.awt.Component.dispatchEvent(Component.java:4303)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:604)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:310)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:176)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:163)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:154)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:380)
at java.net.Socket.connect(Socket.java:569)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.<init>(Socket.java:416)
at java.net.Socket.<init>(Socket.java:232)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:253)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:280)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2026)
... 35 more
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at rafael.rafael2.jButton1MouseClicked(rafael2.java:100)
at rafael.rafael2.access$000(rafael2.java:6)
at rafael.rafael2$1.mouseClicked(rafael2.java:33)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270)
at java.awt.Component.processMouseEvent(Component.java:6120)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3293)
at java.awt.Component.processEvent(Component.java:5882)
at java.awt.Container.processEvent(Container.java:2101)
at java.awt.Component.dispatchEventImpl(Component.java:4477)
at java.awt.Container.dispatchEventImpl(Container.java:2159)
at java.awt.Component.dispatchEvent(Component.java:4303)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4595)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4267)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4188)
at java.awt.Container.dispatchEventImpl(Container.java:2145)
at java.awt.Window.dispatchEventImpl(Window.java:2559)
at java.awt.Component.dispatchEvent(Component.java:4303)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:604)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)
se precisar de mais informações eu tentarei buscá-las…
desde já obrigado pela atenção!
Quando eu coloco programa.jar na máquina local, cujo o IP é 10.20.194.170 o programa roda numa boa e insere a informação no MySQL. Tudo muda quano eu jogo o mesmo programa.jar para a rede e tento utilizá-lo pela mesma máquina (IP: 10.20.194.170) e retornar o erro mencionado acima!
Verifique na conexão se os argumentos da localização do Banco estão OK.
/**Aonde <Servidor é o número do IP do computador aonde está o banco>
E <Banco é o nome do seu banco>*/
String url = "jdbc:mysql://<Servidor>:3306/<Banco>"
E uma última coisa.
Você precisa reconfigurar seu MySql para que ele se comporte como servidor e aceite conexões externas ao localhost.
Verifique na conexão se os argumentos da localização do Banco estão OK.
/**Aonde <Servidor é o número do IP do computador aonde está o banco>
E <Banco é o nome do seu banco>*/
String url = "jdbc:mysql://<Servidor>:3306/<Banco>"
E uma última coisa.
Você precisa reconfigurar seu MySql para que ele se comporte como servidor e aceite conexões externas ao localhost.[/quote]
A localização do banco está ok.
Está assim:
con = DriverManager.getConnection("jdbc:mysql://10.20.194.170:3306/oi","usuario1","");
agora que você tocou no assunto da configuração do MySQL fiquei desconfiado que seja este o problema!
segue a minha configuração de MySql:
Dedicated MySQL Server Machine
Non-Transactional Database Only
Online Transaction Processing (OLTP)
Enable TPC/IP Networking
Enable Strict Mode
Standard Character Set
Install As Windows options
Include Bin Directory in windows Path
senha do root
Enable root access from remote machines
vlw mesmo, vou até pesquisar um pouco mais sobre essa configuração do mysql se comportar como servidor, se você puder continuar ajudando vai ser adiantar bastante a minha vida!
jj_df,
acredito que a solução possa estar na correção dos driver’s nas duas Classpath’s o de execução e o de compilação. Para onde minha variável de ambiente Classpath está apontando, foi onde eu coloquei o driver .jar do mysqlconnector, dentro do projeto eu criei um pacote (package) com nome de br.com.lib e dentro está o mesmo driver, além de adicioná-lo na biblioteca também. A minha dúvida é saber a diferença entre Classpath de Compilação e de Execução. Pode me ajudar?
Caros,
já pesquisei em diversos sites/foruns da internet e a configuração do mysql para funcionar como servidor e aceitar conexões TCP/IP é a mesma postada acima.
Classpath: C:\Arquivos de programas\Java\jdk1.6.0_11\jre\lib\ext
>> dentro tem o arquivo: mysql-connector-java-5.1.6-bin.jar
Diretório do Programa: C:\Documents and Settings\U97289\Meus documentos\NetBeansProjects\rafael\dist
>> quando é gerado o arquivo .jar do programa, este é ocaminho, dentro da pasta “dist” existe uma pasta "lib"
que contém também o arquivo mysql-connector-java-5.1.6-bin.jar (criado automaticamente quando gera o programa.jar)
Por que o código funciona com:
e não funciona com:
se localhost e 10.20.194.170 é a mesma máquina?
obs.: quando coloco o IP no lugar do localhost, tento executar da rede e me retornar o erro:
…
catch (ClassNotFoundException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null,"Erro na conexão, com o banco de dados 2! \n" +e.getMessage() +"\n"+ e.getCause()+"\n"+e.getException(),"Oi. Simples assim!",JOptionPane.WARNING_MESSAGE);
Caros,
muito obrigado por toda a ajuda!
após ler muito sobre minhas dúvidas, lógico que “o caminho das pedras” foi dado pelo forum, encontrei a solução do problema.
Solução:
Adicionar o mysqlconnector nas duas bibliotecas (execução e teste), gerar o .jar e levar pra rede e ser feliz!!!
mais uma vez, muito obrigado a todos…
e valeu pela atenção jj_df