Problemas com data

10 respostas
IsaelCoelho

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.

10 Respostas

A

O tipo pode ser Date.

A

IsaelCoelho:
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.

IsaelCoelho

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();
        }
    }
}
IsaelCoelho

a data é inserida atravéz do campo nascimento

E

Olá,

Qual o formato que se deve digitar a data no form

por exemplo…
dd/MM/yyyy
MM/dd/yyyy
dd-MM-yyyy

???

IsaelCoelho

olha será dd/mm/aaaa

Scoobydoo

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…

E

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 bancovoid 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ódigops.setDate(2, dataNascimento);
IsaelCoelho

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();
        }
    }

    }
E

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

Criado 15 de março de 2011
Ultima resposta 16 de mar. de 2011
Respostas 10
Participantes 4