[quote=KaosBr]Não estou vendo problemas, na forma que você digitou, as estruturas: para inserção e em como montou a sintaxe de SQL.
Verifica com break points, os valores que estão sendo passados para o banco, se de alguma forma não respeitam a estrutura da tabela. Ex:
Colunas de inteiro recebendo, caracteres especiais ou letras.
Colunas, recebendo valores maiores, do que o suportado. Ex: varchar(10), recebendo mais de, 10 caracteres.
A possibilidade de ser um problema, com a forma das variaveis, não estar adequada é a maior ou até mesmo vazio em um campo “NOT NULL”.
Desculpa em não poder ajudar mais. Verifica esses pontos, depois posta o erro, pra gente.
[]s[/quote]
bem, eu tenho que aqui o MySQL 5.1 instalado certo, instalei o MySQL Workbench!!
criei um servidor pronto, depois criei um banco de dados com uma tabela “cliente” que possue “nome, telefone, rg, cpf”, bem como vc disse, em questão de caracteres especias, bem aqui no caso to escrevendo só letra mesmo, mais nada, e quantos a colunas recebendo valores maiores, eu deixo com “45”, e eu não passo de 45 dígitos,
não vejo o que fiz de errado no banco de dados!!!
VocÊ chegou a ver que valores as váriaveis estão, concatenando na variavel “comando”?
Depois de verificar as variaveis, executa o comando no terminal e posta a saida: O comando é: DESCRIBE nome_da_tabela;, ele informa os valores pros atributos da tabela.
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
Connection con = null;
PreparedStatement comando = null;
try{
con = criarConexao();
comando = con.prepareStatement(“INSERT INTO Cliente(nome, telefone, rg, cpf) VALUES (?, ?, ?, ?)”);
comando.setString(1, NomeField.getText());
comando.setString(2, TelefoneField.getText());
comando.setString(3, RGField.getText());
comando.setString(4, CPFField.getText());
comando.executeUpdate();
finally {
if (comando != null) comando.close();
if (con != null) con.close;
}
} catch (Exception e) {
throw new RuntimeException(“Erro ao inserir”, e);
}
}
[/code]
Se não funcionar, poste o StackTrace do erro. E não esqueça de dar um import java.sql.* no começo do seu arquivo.
Veja como é muito melhor usar o PreparedStatement. Não há a necessidade de usar aspas simples, ou concatenar nada com +. Fica bem mais claro o que está acontecendo.
Outras vantagens são que o próprio java se encarrega de converter o formato do dado para o que o banco aceita.
Por isso Strings não necessitam das aspas simples, e você nem precisa ficar formatando objetos do tipo Date.
Finalmente, o java também evita problemas caso houvesse uma aspas simples dentro da sua String. Já pensou o que aconteceria no seu programa se o nome fosse “Jhon’s”?
Outra coisa. Pq o nome dos seus campos estão com letra maiúscula? Pela convenção de nomes do java, atributos de classe deveriam começar com letra minúscula. Eu daria os nomes assim:
txtNome
txtTelefone
txtRG
txtCPF
Fica dentro da convenção e deixa claro que se trata de um JTextField.
[quote=ViniGodoy]Ele deve estar te dando uma mensagem de erro. Diga qual é.
Você adicionou o driver do mysql no seu projeto?[/quote]
add sim o driver do mysql no meu projeto, bem a mensagem de erro que ele mostra, na hora que eu executo o botão pra fazer a conexão e inserir e talz ele mostra isso:
java.lang.ClassNotFoundException: com.gjt.mm.mysql.Driver
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at bancodedados.CadastroClienteFrame.jButton1ActionPerformed(CadastroClienteFrame.java:99)
at bancodedados.CadastroClienteFrame.access$000(CadastroClienteFrame.java:4)
at bancodedados.CadastroClienteFrame$1.actionPerformed(CadastroClienteFrame.java:37)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6041)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5806)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4413)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2440)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: erro ao conectar
at bancodedados.CadastroClienteFrame.jButton1ActionPerformed(CadastroClienteFrame.java:104)
at bancodedados.CadastroClienteFrame.access$000(CadastroClienteFrame.java:4)
at bancodedados.CadastroClienteFrame$1.actionPerformed(CadastroClienteFrame.java:37)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6041)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5806)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4413)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2440)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
bem, eu verifiquei meu minha tabela no banco de dado e está assim:
Field - Type - Null - Key - Default - Extra
codigo - int(11) - yes - pri - null - auto_increment
nome - varchar(45) - no - - null
telefone - varchar(45) - no - - null
rg - varchar(45) - no - - null
cpf - varchar(45) - no - - null
bem eu testei, o servidor tah ok, eu testei o banco de dados tah ok.
Deu erro ao conectar, portanto, seu código ainda nem sequer executou o PreparedStatement (ou, no seu caso, o Statement), pois ele foi incapaz até de criar a conexão.
Ou seja, não vai ser problema nas suas tabelas, nem no texto da sua consulta, nem nada disso, pois o programa ainda nem chegou lá.
Bom, pelo visto você ainda está usando a classe errada do driver.
Ele diz claramente “não encontrei a classe com.gjt.mm.mysql.Driver”. Como o colega falou, a classe certa é “com.mysql.jdbc.Driver”.
Se você trocar e o erro persistir, poste a nova mensagem de erro aqui para a gente dar uma olhada.
Aliás, faça isso sempre que houver um erro nas duas dúvidas do GUJ. Sem o stackTrace fica muito difícil advinharmos qual é o problema.