/*
 * DemoTableJDBC.java
 *
 * Created on 10 août 2004, 16:44
 */

import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;

/**
 *
 * @author  Administrateur
 */
public class DemoTableJDBC extends javax.swing.JFrame {

    
	private static final long serialVersionUID = 8917541394758682060L;
	/** Creates new form DemoTableJDBC */
    public DemoTableJDBC() {
        rsd = new ResultSetDialog(this, true);
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    private void jbInit() throws Exception{//GEN-BEGIN:initComponents
        labelRequete = new javax.swing.JLabel();
        zoneRequete = new javax.swing.JTextField();
        labelRq = new javax.swing.JLabel();
        jMenuBar1 = new javax.swing.JMenuBar();
        connection = new javax.swing.JMenu();
        ouvrir = new javax.swing.JMenuItem();
        fermer = new javax.swing.JMenuItem();
        Quitter = new javax.swing.JMenuItem();

        getContentPane().setLayout(null);

        setTitle("Connection \u00e0 une base de donn\u00e9es");
        setName("frame");
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        labelRequete.setText("Bienvenue");
        Quitter.setAccelerator(javax.swing.KeyStroke.getKeyStroke('Q', java.awt.event.KeyEvent.CTRL_MASK, false));
        getContentPane().add(labelRequete);
        labelRequete.setBounds(10, 10, 390, 30);

        zoneRequete.setEnabled(false);
        zoneRequete.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                zoneRequeteActionPerformed(evt);
            }
        });

        getContentPane().add(zoneRequete);
        zoneRequete.setBounds(10, 70, 380, 23);

        labelRq.setText("Requete SQL");
        getContentPane().add(labelRq);
        labelRq.setBounds(10, 40, 390, 30);

        connection.setText("Connection");
        ouvrir.setText("Ouvrir");
        ouvrir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ouvrirActionPerformed(evt);
            }
        });

        connection.add(ouvrir);

        fermer.setText("Fermer");
        fermer.setEnabled(false);
        fermer.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                fermerActionPerformed(evt);
            }
        });

        connection.add(fermer);

        Quitter.setText("Quitter");
        Quitter.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                QuitterActionPerformed(evt);
            }
        });

        connection.add(Quitter);

        jMenuBar1.add(connection);

        setJMenuBar(jMenuBar1);

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-408)/2, (screenSize.height-172)/2, 408, 172);
    }//GEN-END:initComponents

    private void zoneRequeteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_zoneRequeteActionPerformed
        // TODO add your handling code here:
        // si la equete est de type query alors on recupere le resultat
        // si la requete est de type update alors on affiche lengthnombre de ligne update
        // sinon erreur
        String requete = zoneRequete.getText();

        String debut = requete.substring(0,6);

        if (debut.equals("select") || debut.equals("insert")){
            try{
                resultat = rq.executeQuery(requete);
                zoneRequete.setText("");
                rsd.setResultatModel(resultat);
                rsd.setMessage("R&eacute;sultat de la requete "+requete);
                //rsd.show();
                rsd.setVisible(true);
            }catch(java.sql.SQLException sql){
                javax.swing.JOptionPane.showMessageDialog(this,"La requete "+requete+" n'est pas correcte !");
                // sql.printStackTrace();
            }
        }
        else{
            if (debut.equals("update")){
                try{
                    ligneUpdate = rq.executeUpdate(requete);
                    zoneRequete.setText("");
                    javax.swing.JOptionPane.showMessageDialog(this,"La requete "+requete+" a mis &agrave; jour "+ligneUpdate+" lignes");
                }catch(java.sql.SQLException sql){
                    javax.swing.JOptionPane.showMessageDialog(this,"La requete de mise &agrave; jour "+requete+" n'est pas correcte !");
                    // sql.printStackTrace();
                }
            }
            else{
                javax.swing.JOptionPane.showMessageDialog(this,"La requete "+requete+" n'est pas correcte !");
            }
        }
    }//GEN-LAST:event_zoneRequeteActionPerformed

    private void fermerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fermerActionPerformed
        // TODO add your handling code here:
        labelRequete.setText("Fermerture de la connection");

        try{
            con.close();
            if (rq != null) rq.close();
        if (resultat != null) resultat.close();
        }catch(java.sql.SQLException sql){
            sql.printStackTrace();
        }

        ouvrir.setEnabled(true);
        zoneRequete.setText("");
        zoneRequete.setEnabled(false);
        fermer.setEnabled(false);

        labelRequete.setText("Pret &agrave; une nouvelle connection");
    }//GEN-LAST:event_fermerActionPerformed

    private void ouvrirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ouvrirActionPerformed
        // TODO add your handling code here:
        labelRequete.setText("Ouverture de la connection");

        JDBCConnectionDialog jdbccd = new JDBCConnectionDialog();
        con = jdbccd.activate();
        try{
            rq  = con.createStatement();
        }catch(java.sql.SQLException sql){
            sql.printStackTrace();
        }
        resultat = null;

        if ( con !=  null){
            ouvrir.setEnabled(false);
            zoneRequete.setEnabled(true);
            fermer.setEnabled(true);

            labelRequete.setText("Connection &eacute;tablie");
        }
        else{
            labelRequete.setText("Connection &eacute;chouer");
        }


    }//GEN-LAST:event_ouvrirActionPerformed

    private void QuitterActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_QuitterActionPerformed
        // TODO add your handling code here:
        System.exit(0);
    }//GEN-LAST:event_QuitterActionPerformed

    /** Exit the Application */
    private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
        System.exit(0);
    }//GEN-LAST:event_exitForm

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        //new DemoTableJDBC().show();
    	new DemoTableJDBC().setVisible(true);
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JMenuItem Quitter;
    private javax.swing.JMenu connection;
    private javax.swing.JMenuItem fermer;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JLabel labelRequete;
    private javax.swing.JLabel labelRq;
    private javax.swing.JMenuItem ouvrir;
    private javax.swing.JTextField zoneRequete;
    // End of variables declaration//GEN-END:variables
    private Connection con;
    private Statement  rq;
    private ResultSet resultat;
    private int ligneUpdate;
    private ResultSetDialog rsd;
}
