Não consigo incluir itens no banco de dados

9 respostas
douglasmorais

Agora pintou outro probleminha. Vejam se dá pra dar uma força.
meu código tá assim:

public class Testa13{ public static void main(String args[]){ conexao12 plug = new conexao12(); int inicio = -6; double Esferico; double Cilindrico; int Eixo; plug.conecta(); for( Esferico=inicio; Esferico<=6;Esferico=Esferico+0.25); for( Cilindrico=0.25; Cilindrico<=3;Cilindrico=Cilindrico+0.25); for( Eixo=1; Eixo<=180;Eixo=Eixo+1); String insertsql = "insert into lentes (esferico,cilindrico,eixo) values (Esferico,Cilindrico,Eixo)"; plug.grava(insertsql); plug.desconecta(); } }

O meu Banco tem um campo id gerado automaticamente. Além dele tem o Campo Esferico, Cilindrico e Eixo.
Quando executo o código acima apenas o campo id é atualizado.
Alguém sabe pq os demais campos não sao inseridos no banco de dados ?

Valeu…

9 Respostas

S

Que classe conexao12 eh essa tu que fez?
O que o grava faz? Commita e da rollback se der erro?
Que banco que eh?

douglasmorais

Amigo, obrigado por responder.
Não sei oque é commita e rollback.
O banco é mysql. Todos os campos são inteiros.

segue a classe conexao12:

import java.sql.;
import javax.swing.
;

public class conexao12 {

final private String driver = com.mysql.jdbc.Driver;

final private String url = jdbc:mysql://localhost/produtos”;

final private String usuario = root;

final private String senha = admin;

private Connection conexao;

public Statement statement;

public ResultSet resultset;
public boolean conecta(){ boolean result = true;

try{

Class.forName(driver);

conexao = DriverManager.getConnection(url,usuario,senha);

JOptionPane.showMessageDialog(null,“CONECTADO);

}

catch(ClassNotFoundException Driver){

JOptionPane.showMessageDialog(null,“Driver não Localizado+Driver);

result = false;

}

catch(SQLException Fonte){

JOptionPane.showMessageDialog(null,“Deu erro com fonte de dados+Fonte);

result = false;

}

return result;
}
public void desconecta() { boolean result = true;

try{

conexao.close();

JOptionPane.showMessageDialog(null,BANCO FECHADO);

}

catch(SQLException ErroSql){

JOptionPane.showMessageDialog(null,NAO FOI POSSÍVEL FECHAR BANCO+ErroSql);

result = false;

}

}
public void executeSQL(String sql) {
                      try{
                      statement = conexao.createStatement();
                      resultset = statement.executeQuery(sql);
                      }
                      catch(SQLException sqlex){
                      JOptionPane.showMessageDialog(null,"NAO EXECUTOU   "+sqlex+" "  +sql);
                      }
                                                    
                      }    



   public void grava(String insertsql) { 
                    try{ statement = conexao.createStatement();
                    int insnum = statement.executeUpdate(insertsql);	 
                    } 
                    catch(SQLException erro) {JOptionPane.showMessageDialog(null,"FUDEU");
                                             }
                    }

}

douglasmorais

consegui arrumar.

O problema agora é que não ta salvando no banco de dados todos os registros gerados pelos FOR.

Não Consigo Perceber o erro.

public class Testa13{

public static void main(String args[]){

conexao12 plug = new conexao12();

int inicio = -6;

double Esferico;

double Cilindrico;

int Eixo;

plug.conecta();

for( Esferico=-6; Esferico<=6;Esferico=Esferico+0.25);

for( Cilindrico=0.25; Cilindrico<=3;Cilindrico=Cilindrico+0.25);

for( Eixo=1; Eixo<=180;Eixo=Eixo+1);

System.out.println(Esferico +"  “+”+"+Cilindrico+"  X  “+Eixo);

String insertsql = “insert into lentes (esferico,cilindrico,eixo) values (”+Esferico+”,"+Cilindrico+","+Eixo+")";

plug.grava(insertsql);

plug.desconecta();

}

}
amartins.xr

Ola douglasmorais,

1º - Commit ou Commitar “no popular”, é executar o comando;
2º - RollBack seria o retorno após a execução… se de erro, virá a mensagem informando o erro…se não apresentará mensagem com dizendo que foi realizado o commit com sucesso.

OBS:;;; minhas palavras!

Em relação a  suas classes deverá mexer na Conexação12, me parece que está faltando a porta do Host Mysql;

na linha => final private String url = jdbc:mysql://localhost/produtos;

exemplo = > final private String url = jdbc:mysql://localhost:3307 ou 3306/produtos;

A T E N Ç Ã O ! ! ! !
SE VOCE DISSE QUE ESTA ATUALIZANDO O CAMPO “ID” ENTÃO ESTA TENDO COMUNICAÇÃO COM O BANCO, SE FOR O CASO NA PRECISA MEXER;

E na sua Classe “Testa13” verificar seu insert;
Pois o “id” como voce disse nao esta sendo referenciado, por isso que esta apenas atualizando o “id”, la no banco ele esta como “auto_increment”. E o nome está sendo sempre o mesmo “Esferico,Cilindrico,Eixo”;

String insertsql = “insert into lentes (esferico,cilindrico,eixo) values (Esferico,Cilindrico,Eixo)”;

Deveria ficar assim :

INSERT INTO LENTES ( ESFERICO, CILINDRICO, EIXO) VALUES (ESFERICO, CILINDRICO, EIXO);

E MODIFICAR

INSERT INTO LENTES (ESFERICO, CILINDRICO, EIXO) VALUES (CANETA, LAPIS,BORRACHA);
amartins.xr

hiiii!!! agora complicou tudo…vou dar uma olhada com calma !.[b]

douglasmorais

Obrigado pela atenção Amartins.xr

Agora consegui gravar. Porém não está gravanto todos os itens gerados no laço FOR.

Essa implementação deve estar com problema. Vc tem alguma dica pra gravar todos os itens gerados no Laço seja gravado ?

douglasmorais

Agora o problema é outro.

Você reparou que tem um laço for :

for( Esferico=inicio; Esferico<=6;Esferico=Esferico+0.25);

for( Cilindrico=0.25; Cilindrico<=3;Cilindrico=Cilindrico+0.25);

for( Eixo=1; Eixo<=180;Eixo=Eixo+1);

Nos meus planos, era pra ser gravado todos os itens gerados no laço FOR. Mas não tá gravando. Aliás, tá gravando um único item que está fora do laço. O item é:

Esferico 6.25 / Cilindrico 3.25 / Eixo 181.

Fiz o teste com um System.out.println(Esferico +" “+”+"+Cilindrico+" X "+Eixo) pra ver se o Laço estava funcionando e estava.

No caso, o laço gerou até o 6.00 3.25 180. Não sei de onde surgiu esse 6.25 3.25 181 que foi gravado no banco.

mau_rs

Pessoal, fiz uma classe de conexao parecida com do amigo, mas eu gostaria de saber como recupero valor de “r” pra eu saber se gravou ou não no banco?

isto esta na classe conexao

code

int r= statement.executeUpdate(insertsql);

/code

mau_rs

Consegui fazer, só tinha que tornar publico o r na classe

Criado 4 de fevereiro de 2009
Ultima resposta 4 de fev. de 2009
Respostas 9
Participantes 4