Estou com um problema em cadastrar os dados no banco.
Sempre aparece uma excessão mas não consigo resolver.
segue o código:
public void Tela1() {
Connection con = null; //inicializa como nula
String num;
try {
num = fieldNum.getText();
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null, "Preencha todos os campos corretamente!",
"Erro", JOptionPane.ERROR_MESSAGE);
return;
}
String nome;
try {
nome = fieldNome.getText();
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null, "Preencha todos os campos corretamente!",
"Erro", JOptionPane.ERROR_MESSAGE);
return;
}
int idade;
try {
idade = Integer.parseInt(fieldIdade.getText());
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null, "Preencha todos os campos corretamente!",
"Erro", JOptionPane.ERROR_MESSAGE);
return;
}
String datInsemin;
try {
datInsemin= fieldInsemin.getText();
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null, "Preencha todos os campos corretamente!",
"Erro", JOptionPane.ERROR_MESSAGE);
return;
}
String datParto;
try {
datParto = fieldParto.getText();
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null, "Preencha todos os campos corretamente!",
"Erro", JOptionPane.ERROR_MESSAGE);
return;
}
String datSecagem;
try {
datSecagem = fieldSecagem.getText();
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null, "Preencha todos os campos corretamente!",
"Erro", JOptionPane.ERROR_MESSAGE);
return;
}
String cria;
try {
cria = fieldCria.getText();
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null, "Preencha todos os campos corretamente!",
"Erro", JOptionPane.ERROR_MESSAGE);
return;
}
String datVacina;
try {
datVacina = fieldVacina.getText();
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null, "Preencha todos os campos corretamente!",
"Erro", JOptionPane.ERROR_MESSAGE);
return;
}
/*********** conexão ***************/
if (con == null) {
try {
Class.forName("org.gjt.mm.mysql.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost/gado", "root", "2017");
Statement stmt = con.createStatement();
String nomTable = "tabela1";
stmt.executeUpdate("INSERT INTO "+ nomTable+ "(codGado, nomeGado, idadeGado, datInsemin," +
"datParto, datSecagem, sexoCria, datVacina) VALUES ('"+fieldNum+"', '"+fieldNome+"', '"+fieldIdade+"', " +
" '"+fieldInsemin+"', '"+fieldParto+"', '"+fieldSecagem+"', '"+fieldCria+"', '"+fieldVacina+"');" );
JOptionPane.showMessageDialog(this, "Dados cadastrados com sucesso!");
fieldNum.setText("");
fieldNome.setText("");
fieldIdade.setText("");
fieldInsemin.setText("");
fieldParto.setText("");
fieldSecagem.setFocusable(true);
fieldCria.setText("");
fieldVacina.setText("");
stmt.close();
con.close();
} catch (ClassNotFoundException cnfe) {
JOptionPane.showMessageDialog(null, "Driver JDBC não encontrado!",
"Erro", JOptionPane.ERROR_MESSAGE);
} catch (SQLException sqlex) {
JOptionPane.showMessageDialog(null, "Os seguintes erros foram encontrados:\n" + sqlex,
"Erro", JOptionPane.ERROR_MESSAGE);
System.err.println(sqlex);
}
}
} // fim do if
}
Também modifiquei a parte do executeUpdate por String sql = "..."
stmt.executeUpdate(sql);
Mesmo assim continua mostrando a excessão a seguir:
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'codGado' at row 1
Ficarei muito grato se puderem me ajudar.
Obrigado.
o Exception está falando que vc está tentando enfiar melãncia onde deveria ir um ovo...
ou seja...
a coluna codGado tem um tamanho < vc está jogando nele.
exemplo:
....
codGado varchar(5);
.....
' seu insert '
INSERT INTO tabela(codGado) values('000008569');
sakou ?!
verifica isso ai
Resolvi o problema!
Bastava adicionar um .getText() nos fields dentro do INSERT do executeUpdate.
Todos os campos estavam sendo truncados, mas mostrava uma excessão de apenas o primeiro campo truncado.
Está resolvido.
Reeves, obrigado pela ajuda.
Ótimo, resolvido -> trancado.
Caso necessite contate algum moderador para reabrir o tópico.
Bye.