o problema é o seguinte tenho um campo no meu form chamado nascimento onde vou inserir uma data de nascimento no banco de dados mias pude perceber que o Mysql não aceita quando esse valor vem de uma variavel int como faço para inserir esse dado corretamente na tabela.
Problemas com data
10 Respostas
O tipo pode ser Date.
o problema é o seguinte tenho um campo no meu form chamado nascimento onde vou inserir uma data de nascimento no banco de dados mias pude perceber que o Mysql não aceita quando esse valor vem de uma variavel int como faço para inserir esse dado corretamente na tabela.
Poste seu código.
essa é a parte onde pego os valores das variaveis do JtextField
Banco b = new Banco();
b.iniciaBanco();
String Nome = nome.getText(); //Maria
int Nascimento = Integer.parseInt(nascimento.getText());
int Numero = Integer.parseInt(numero.getText());
int Ano = Integer.parseInt(ano.getText());
String Curso = curso.getText();
int Serie = Integer.parseInt(serie.getText());
String Turno = turno.getText();
String Turma = turma.getText();
String cidade = CidadeNascimento.getText();
String UF = UFNascimento.getText();
String Pai = pai.getText();
String Mae = mae.getText();
String Sexo = sexo.getText();
try {
b.cadastraPessoa(Nome, Nascimento, Numero, Ano, Curso, Serie, Turno, Turma, cidade, UF, Pai, Mae, Sexo); //Maria
JOptionPane.showMessageDialog(this, "Pessoa Cadastrada com Sucesso!");
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, "erro ao inserir dados no banco de dados\n" + ex, " Erro", JOptionPane.ERROR_MESSAGE);
return;
}
}
essa é a classe onde uso o codigo SQL
package novo;
import com.mysql.jdbc.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Banco {
private static Connection conn;
private static ResultSet rs;
private static PreparedStatement ps;
private static Statement st;
public Statement getSt() {
return st;
}
public void iniciaBanco() {
try {
Class.forName("com.mysql.jdbc.Driver");
//objeto responsavel pela conexao com o banco de dados
conn = DriverManager.getConnection("jdbc:mysql://localhost/escola", "root", "");
st = (Statement) conn.createStatement();
} catch (Exception e) {
System.out.println("erro de conexao ao banco");
}
}
void cadastraPessoa (String Nome, int Nascimento, int Numero, int Ano, String Curso, int Serie, String Turno, String Turma, String cidade, String UF, String Pai, String Mae, String Sexo) { //Maria
try {
iniciaBanco();
try {
String sql = "INSERT INTO aluno ( Nome, Nascimento, Numero, Ano, Curso, Serie, Turno, Turma, CidadeNascimento, UFNascimento, Pai, Mae, Sexo ) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?);";
ps = conn.prepareStatement(sql);
ps.setString(1, Nome);
ps.setInt(2, Nascimento);
ps.setInt(3, Numero);
ps.setInt(4, Ano);
ps.setString(5, Curso);
ps.setInt(6, Serie);
ps.setString(7, Turno);
ps.setString(8, Turma);
ps.setString(9, cidade);
ps.setString(10, UF);
ps.setString(11, Pai);
ps.setString(12, Mae);
ps.setString(13, Sexo);
ps.execute();
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
fechaBanco();
e.printStackTrace();
}
}
void fechaBanco() {
try {
conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
a data é inserida atravéz do campo nascimento
Olá,
Qual o formato que se deve digitar a data no form
por exemplo…
dd/MM/yyyy
MM/dd/yyyy
dd-MM-yyyy
???
olha será dd/mm/aaaa
Se você esta adicionando no seu Text dd/mm/aaaa, como você esta setando um int com esse valor oO…
Transforme a variavel nascimento em String…
Mas eu recomendo você estudar o Java.Util.Date…
Cara, eu faria assim:
Classe que pega os dados do form…
String Nascimento = nascimento.getText();
DateFormat formato = new SimpleDateFormat(“dd/MM/yyyy”);
Date dataNascimento = formato.parse(Nascimento);
Classe que grava no banco…
void cadastraPessoa (String Nome, String dataNascimento, int Numero, int Ano, String Curso, int Serie, String Turno, String Turma, String cidade, String UF, String Pai, String Mae, String Sexo)
…
continua código
…
ps.setDate(2, dataNascimento);
mano fiz como no exemplo mas deu erro
o erro aki esta na linha 9
Banco b = new Banco();
b.iniciaBanco();
String Nome = nome.getText(); //Maria
String Nascimento = nascimento.getText();
DateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
java.util.Date dataNascimento;
dataNascimento = formato.parse(Nascimento);
int Numero = Integer.parseInt(numero.getText());
int Ano = Integer.parseInt(ano.getText());
String Curso = curso.getText();
int Serie = Integer.parseInt(serie.getText());
String Turno = turno.getText();
String Turma = turma.getText();
String cidade = CidadeNascimento.getText();
String UF = UFNascimento.getText();
String Pai = pai.getText();
String Mae = mae.getText();
String Sexo = sexo.getText();
try {
b.cadastraPessoa(Nome, dataNascimento, Numero, Ano, Curso, Serie, Turno, Turma, cidade, UF, Pai, Mae, Sexo); //Maria
JOptionPane.showMessageDialog(this, "Pessoa Cadastrada com Sucesso!");
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, "erro ao inserir dados no banco de dados\n" + ex, " Erro", JOptionPane.ERROR_MESSAGE);
return;
}
void cadastraPessoa (String Nome, dataNascimento, int Numero, int Ano, String Curso, int Serie, String Turno, String Turma, String cidade, String UF, String Pai, String Mae, String Sexo) { //Maria
try {
iniciaBanco();
try {
String sql = "INSERT INTO aluno ( Nome, Nascimento, Numero, Ano, Curso, Serie, Turno, Turma, CidadeNascimento, UFNascimento, Pai, Mae, Sexo ) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?);";
ps = conn.prepareStatement(sql);
ps.setString(1, Nome);
ps.setDate(2, dataNascimento);
ps.setInt(3, Numero);
ps.setInt(4, Ano);
ps.setString(5, Curso);
ps.setInt(6, Serie);
ps.setString(7, Turno);
ps.setString(8, Turma);
ps.setString(9, cidade);
ps.setString(10, UF);
ps.setString(11, Pai);
ps.setString(12, Mae);
ps.setString(13, Sexo);
ps.execute();
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
fechaBanco();
e.printStackTrace();
}
}
void fechaBanco() {
try {
conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
olá,
Post o erro…
Duas alternativas provaveis:
1- A data não está sendo digitada neste formato: dd/MM/yyyy ex: 01/12/2011
2- [b]SimpleDateFormat[b] formato = new SimpleDateFormat(“dd/MM/yyyy”);
Não esqueça dos imports
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
Aguardo