Não carrega Jtable ao abrir Tela

Pessoal ao abrir o jframe ele pega a data do dia setado em um campo jtextfield e busca os registro do dia mas carrega tenho uma outra tela exatamente igual que funciona mas essa nao esta funcionando. Abaixo método de popular jtable

public void PopularJTable1(String sql) throws SQLException {
try {
PreparedStatement banco = (PreparedStatement) conexao.prepareStatement(sql);

        banco.execute(); // cria o vetor

        ResultSet resultado = banco.executeQuery(sql);

        DefaultTableModel mode = (DefaultTableModel) tblContasP.getModel();
        mode.setNumRows(0);

        while (resultado.next()) {
            mode.addRow(new Object[]{
                //retorna os dados da tabela do BD, cada campo e um coluna.
                resultado.getString("idContasP"),
                resultado.getString("descricao"),
                resultado.getString("pago"),
                resultado.getString("data_vencimento"),
                resultado.getString("especie"),
                resultado.getString("parcela"),
                resultado.getString("A.idVeiculo"),
                resultado.getString("C.modelo"),
                resultado.getString("A.idFornecedor"),
                resultado.getString("B.fornecedor"),
                resultado.getString("valor")

            });
        }

    } catch (SQLException ex) {
        //System.out.println("o erro foi " + ex);
    }

}

o erro esta aqui no evento quando abre a tela, se eu colocar na string sql apenas a a coluna do mysql que é “data_vencimento” ele trás a data mas no formato americano yyyy-mm-dd no
aqui quando coloco isso não funciona abaixo ->
DATE_FORMAT(data_vencimento, ‘%d/%m/%Y’)

Date data = new Date();

        SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
        String x;
        x = format.format(data);
        txtDataP.setText(x);

        try {
            // TODO add your handling code here:
            SimpleDateFormat formatador = new SimpleDateFormat("yyyy-MM-dd");
            String dat;
            dat = formatador.format(data);
            txtDataP.setText(dat);
            this.PopularJTable1("Select idContasP, descricao, pago, DATE_FORMAT(data_vencimento, \"%d/%m/%Y\"), especie, parcela, \n"
                    + "A.idVeiculo, C.modelo, A.idFornecedor , B.fornecedor , valor \n"
                    + "                FROM tbl_contaspagar AS A\n"
                    + "                INNER JOIN tbl_fornecedor AS B \n"
                    + "                on \n"
                    + "                A.idFornecedor = B.idFornecedor \n"
                    + "                INNER JOIN veiculo AS C \n"
                    + "                on \n"
                    + "                A.idVeiculo = C.idVeiculo \n"
                    + "where data_vencimento='" + dat + "'");

        } catch (SQLException ex) {
            Logger.getLogger(TelaContaPagar.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

Chame o método responsável por popular a JTable no construtor da classe. Só que vai solicitar que você trate a exceção no construtor o que pessoalmente eu não gosto. Então, todo método que eu chamo no construtor eu trato via try/catch sem lançar exceção via throws.

o erro foi java.sql.SQLException: Column ‘dataa’ not found.

erro que esta dando

O sql tem a palavra dataa?
Se for, este é o erro de escrita, pois a relação correspondente no banco de dados não possui uma coluna com este nome (dataa).

Mas existe :confused:

nessa parte do codigo não funciona

Já essa sim mas trás a data no formato americano


O parse deveria funcionar.

Vc pode pegar a data normal do banco yyyy/mm/dd e usar regex para trocar as posições ano e dia.
Ex.:
String data = resultado.getString("data_vencimento").repacleAll("(\\d{4}).(\\d{2}).(\\d{2})", "$3/$2/$1");
Além disso, qual o literal do sql que contém a coluna dataa?

me desculpe a ignorância mas o que é literal do SQL ?

String sql = “select … from … where …;
from”.
String sql = “insert into …(…) values(…)”;
String sql = “valor literal”;
Etc.
É o valor com o qual vc inicializa a variável/constante sql.
Literal: porque lê o que está escrito.

this.PopularJTable1("SELECT tbl_contaspagar.idContasP, tbl_contaspagar.descricao, tbl_contaspagar.pago, data_vencimento, tbl_contaspagar.especie, tbl_contaspagar.parcela, \n"
                    + "                    tbl_contaspagar.idVeiculo, C.modelo, tbl_contaspagar.idFornecedor, B.fornecedor , tbl_contaspagar.valor \n"
                    + "                                    FROM tbl_contaspagar \n"
                    + "                                    INNER JOIN tbl_fornecedor AS B \n"
                + "                                    on \n"
                + "                                    tbl_contaspagar.idFornecedor = B.idFornecedor \n"
                + "                                    INNER JOIN veiculo AS C \n"
                + "                                    on \n"
                + "                                    tbl_contaspagar.idVeiculo = C.idVeiculo \n"
                + "                    WHERE tbl_contaspagar.data_vencimento='" + dat + "'");`Texto pré-formatado`

Este é O SQL que Passo la na aplicação java e funciona mas me retorna a data padrao do banco de dados 2019-11-25.

quero que me retorne a data padrão Brasil dd/mm/yyyy
tenho uma outra tela que funciona com o DATE_FORMAT();
Mas nesse modulo não quer funcionar diz que o erro é coluna nao encontrada mas esta tudo certo já revisei varias vezes o fonte.

É estranho, pois se funciona sem o DATE_FORMAT, podemos supor um problema de sintaxe.
Tente com aspas simples, sem o escape.
DATE_FORMAT(data_vencimento, '%d/%m/%Y')

o erro foi java.sql.SQLException: Column ‘data_vencimento’ not found.

vou postar o sql da outra tela QUE FUNCIONA !!!

this.PopularJTable("SELECT idCaixa, descricao, tipo, DATE_FORMAT( dataa, \"%d/%m/%Y\" ) as Dataa, A.idVeiculo, B.modelo, valor \n"
                    + "FROM tbl_caixa AS A\n"
                    + "INNER JOIN veiculo AS B \n"
                    + "on \n"
                    + "A.idVeiculo = B.idVeiculo\n"
                    + "where dataa='" + dat + "'");

oBS.; ja tentei assim: “%d/%m/%Y”

Vc não renomeou a coluna com o alias data_vencimento.

O erro deve estar ocorrendo no resultset resultado.setString(“data_vencimento”);
Use o debug marque essa linha e quando der seguimento deve dar um erro.

Tente:

DATE_FORMAT(data_vencimento, ‘%d/%m/%Y’) as data_vencimento

Apenas Fiz Uma pequena alteração

DATE_FORMAT(data_vencimento, \"%d/%m/%Y\") as data_vencimento