Я не могу вставить значения в свою базу данных (java не показывает ошибку) - PullRequest
0 голосов
/ 24 апреля 2020

Я провел несколько тестов, значения представлений сохраняются в модели, но не передаются в базу данных. Значения, введенные на экране, отлично распечатываются консолью, но на момент ввода в базу данных они не заполнены, и я не смог определить ошибку.

Класс DAO.

public class ProyectoDAO {
ConexionSQL conectar = new ConexionSQL();
Connection con;
PreparedStatement ps;
ResultSet rs;

    public int insert(Proyecto p) {
        String sql = "INSERT INTO proyecto (name, status, duration, advance) VALUES (?,?,?,?)";
        try {

            con = conectar.getConexionSQL();
            ps=con.prepareStatement(sql);
            ps.setString(2, p.getNombre());
            //ps.setString(2, "Test");
            ps.setInt(3, p.getStatus());
            ps.setInt(5, p.getDuracion());
            ps.setInt(6, p.getAvance());
            int registro = ps.executeUpdate();      
            return 1;

        } catch(Exception e){

        }
        return 0;
    }
}

Контроллер Proyecto

public class Cproyecto extends ConexionSQL {

    Proyecto p = new Proyecto();
    Vproyecto vp = new Vproyecto();
    Version ver = new Version();
    Connection con = getConexionSQL();
    ProyectoDAO pdao = new ProyectoDAO();
    VersionDAO vdao = new VersionDAO();

    public Cproyecto(Proyecto p) {
        super();
        this.vp.addRegistrarListener(new guardarValor()); 
        this.vp.addActualizarListener(new actualizarValor());
        this.vp.addBuscarListener(new buscarValor());
    }

    public void initProyecto() {
        vp.setVisible(true);
        vp.textID.setText(String.valueOf(p.getCod())); //Esto debe aparecer al abrir Registrar
    }

    // Register
        class guardarValor implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                try {

                    if (vp.textNombre.getText().isEmpty() || vp.textVersion.getText().isEmpty() || vp.textAvance.getText().isEmpty())
                        JOptionPane.showMessageDialog(null, "Debe rellenar todos los campos");
                    else {
                        //Save values
                        p.setNombre(vp.textNombre.getText());
                        p.setStatus(vp.comboEstado.getSelectedIndex());
                        p.setDuracion(vp.comboDuracion.getSelectedIndex());
                        p.setAvance(Integer.valueOf(vp.textAvance.getText()));
                        ver.setNameVersion(vp.textVersion.getText());
                        int rp = pdao.insertar(p);
                        int rv = vdao.insertarVer(ver,p);                       

                        } //end else
                } catch (Exception error) {
                    JOptionPane.showMessageDialog(null, "Ha ocurrido un error, consulte a Soporte Técnico");
                    vp.limpiar();
                }
            } //end void
        } //end class   
}

Соединение

public class ConexionSQL {
    Statement stm;
    Connection con;


    public Connection getConexionSQL() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://127.0.0.1/analisisqa","root","");
            //Statement stm = con.createStatement();
        }
        catch(ClassNotFoundException exc) {
            exc.printStackTrace();
            JOptionPane.showMessageDialog(null, "No Conectado");
        }
        catch (SQLException ex) {
            Logger.getLogger(ConexionSQL.class.getName()).log(Level.SEVERE, null, ex);
            JOptionPane.showMessageDialog(null, "No Conectado");
        }
        return con;

    }
}

Мой главный.


public class Main {

    public static void main(String[] args) {

        ConexionSQL con = new ConexionSQL();
        // TODO Auto-generated method stub
        Proyecto p = new Proyecto();
        Prueba pru = new Prueba();
        Version ver = new Version();

        CPrueba cpru = new CPrueba(pru, ver, p);
        Cproyecto cp = new Cproyecto(p);

        ProyectoDAO pdao = new ProyectoDAO();
        PruebaDAO prudao = new PruebaDAO();
        VersionDAO verdao = new VersionDAO();

        Cprincipal cprincipal = new Cprincipal(p, pru, ver, cpru, cp, con, pdao, prudao, verdao);
        cprincipal.initPrincipal();

    }

}

Ответы [ 2 ]

3 голосов
/ 24 апреля 2020

Ваш запрос SQL, кажется, имеет 4 параметра:

String sql = "INSERT INTO proyecto (name, status, duration, advance) VALUES (?,?,?,?)";

Но вы настраиваете что-то другое

ps.setString(2, p.getNombre());
//ps.setString(2, "Test");
ps.setInt(3, p.getStatus());
ps.setInt(5, p.getDuracion());
ps.setInt(6, p.getAvance());

И затем вы игнорируете ошибку

} catch(Exception e){

}

Начните с печати исключения (или дайте ему распространиться). Это даст вам больше деталей. Затем исправьте индексы параметров:

ps.setString(1, p.getNombre());
ps.setInt(2, p.getStatus());
ps.setInt(3, p.getDuracion());
ps.setInt(4, p.getAvance());
0 голосов
/ 24 апреля 2020

Ваш запрос выглядит так:

String sql = "INSERT INTO proyecto (name, status, duration, advance) VALUES (?,?,?,?)";

Но вы неверно настраиваете параметры:

 ps.setString(2, p.getNombre());
 //ps.setString(2, "Test");
 ps.setInt(3, p.getStatus());
 ps.setInt(5, p.getDuracion());
 ps.setInt(6, p.getAvance());

Исправьте индексы параметров:

public class ProyectoDAO {
ConexionSQL conectar = new ConexionSQL();
Connection con;
PreparedStatement ps;
ResultSet rs;

public int insert(Proyecto p) {
    String sql = "INSERT INTO proyecto (name, status, duration, advance) VALUES (?,?,?,?)";
    try {

        con = conectar.getConexionSQL();
        ps=con.prepareStatement(sql);
        ps.setString(1, p.getNombre());
        //ps.setString(2, "Test");
        ps.setInt(2, p.getStatus());
        ps.setInt(3, p.getDuracion());
        ps.setInt(4, p.getAvance());
        int registro = ps.executeUpdate(); 


        if(registro >= 1){
           return 1;
        }else{
          return 0;
        }

    } catch(Exception e){
            e.printStackTrace();
    }
    return 0;
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...