• Jueves 14 de Noviembre de 2024, 19:43

Autor Tema:  Conexion Base de datos mysql  (Leído 2503 veces)

angelus777

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Conexion Base de datos mysql
« en: Martes 20 de Mayo de 2014, 17:00 »
0
Cordial Saludo
estoy ensayando un codigo para conectar a mysql pero, me sale error al conectar y no estoy seguro si es algo en el codigo:

Exception in thread "main" java.lang.NullPointerException
   at co.madesoft.db.DbEstudiante.getEstudiantes(DbEstudiante.java:71)
   at co.madesoft.gui.GuiEstudiante.<init>(GuiEstudiante.java:35)
   at co.madesoft.gui.GuiEstudiante.main(GuiEstudiante.java:28)
este es el error y adjunto el codigo:
DbConnection para la conexion con la base de datos


package co.madesoft.db;

import java.sql.*;
/**
* Clase que permite conectar con la base de datos
* @author alejo
*/
public class DbConnection {
   static String bd = "clase";
   static String login = "root";
   static String password = "";
   static String url = "jdbc:mysql://localhost/"+bd;

   Connection conn = null;

   /** Constructor de DbConnection */
   public DbConnection() {
      try{
         //obtenemos el driver de para mysql
         Class.forName("com.mysql.jdbc.Driver");
         //obtenemos la conexión
         conn = DriverManager.getConnection(url,login,password);
         if (conn!=null){
            System.out.println("Conección a base de datos "+bd+" OK");
         }
      }catch(SQLException e){
         System.out.println(e);
      }catch(ClassNotFoundException e){
         System.out.println(e);
      }
   }
   /**Permite retornar la conexión*/
   public Connection getConnection(){
      return conn;
   }

   public void desconectar(){
      conn = null;
   }

}


DbEstudiante para la manipulación de la tabla estudiante


package co.madesoft.db;

import java.sql.*;

public class DbEstudiante {
   DbConnection cn;

   /** Constructor de DbUser */
   public DbEstudiante() {
      cn = new DbConnection();
   }

   /** Obtiene las notas de un estudiante por su codigo */
   public Object[][] getNotasByEstudiante(String cod){
      int registros = 0;

      try{
         Statement stm = cn.getConnection().createStatement();
         PreparedStatement pstm = cn.getConnection().prepareStatement("SELECT count(1) as cont" +
            " FROM asignatura a " +
            " inner join nota n on a.asi_codigo = n.asi_codigo" +
            " where n.est_codigo = ? ");

         pstm.setString(1, cod);
         ResultSet res = pstm.executeQuery();

         res.next();
         registros = res.getInt("cont");
         res.close();
      }catch(SQLException e){
         System.out.println(e);
      }
     
      Object [][] data = new Object[registros][5];
      try{
         Statement stm = cn.getConnection().createStatement();
         PreparedStatement pstm = cn.getConnection().prepareStatement("SELECT n.asi_codigo, " +
            " a.asi_nombre, " +
            " n.nota " +
            " FROM asignatura a " +
            " inner join nota n on a.asi_codigo = n.asi_codigo " +
            " where n.est_codigo = ? order by n.asi_codigo ");

         pstm.setString(1, cod);
         ResultSet res = pstm.executeQuery();
         int i = 0;
         while(res.next()){
            String asiCodigo = res.getString("asi_codigo");
            String asiNombre = res.getString("asi_nombre");
            Double asiNota = res.getDouble("nota");

            data[0] = asiCodigo;
            data[1] = asiNombre;
            data[2] = asiNota;
            i++;
         }
         res.close();
      }catch(SQLException e){
         System.out.println(e);
      }
      return data;
   }
   /** trae todos los estudiantes */
   public Object[][] getEstudiantes(){
      int registros = 0;
      try{
         Statement stm = cn.getConnection().createStatement();
         PreparedStatement pstm = cn.getConnection().prepareStatement("SELECT count(1) as cont" +
            " FROM estudiante ");

         ResultSet res = pstm.executeQuery();
         res.next();
         registros = res.getInt("cont");
         res.close();
      }catch(SQLException e){
         System.out.println(e);
      }

      Object [][] data = new Object[registros][5];
      try{
         Statement stm = cn.getConnection().createStatement();
         PreparedStatement pstm = cn.getConnection().prepareStatement("SELECT est_codigo, " +
            " est_nombre " +
            " FROM estudiante " +
            " ORDER BY est_codigo ");


         ResultSet res = pstm.executeQuery();
         int i = 0;
         while(res.next()){
            String estCodigo = res.getString("est_codigo");
            String estNombre = res.getString("est_nombre");

            data[0] = estCodigo;
            data[1] = estNombre;
            i++;
         }
         res.close();
      }catch(SQLException e){
         System.out.println(e);
      }
      return data;
   }
}

package co.madesoft.gui;

import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;

import co.madesoft.db.*;

public class GuiEstudiante implements ActionListener {

   JFrame frame;
   JScrollPane spEstudiantes,spNotas;
   DefaultTableModel dtmEstudiantes,dtmNotas;
   JTable jtbEstudiantes,jtbNotas;
   JPanel pnlEstudiantes;
   JLabel lblCodigo,lblNombre;
   JTextField txtCodigo,txtNombre;
   Object[][] dtEstudiantes;
   Object[][] dtNotas;
   DbEstudiante us = new DbEstudiante();

   int fila = -1;
   public static void main(String[] args) {
      JFrame.setDefaultLookAndFeelDecorated(true);
      GuiEstudiante g = new GuiEstudiante();
   }

   public GuiEstudiante(){
      frame = new JFrame("Notas de estudiantes");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      dtEstudiantes = us.getEstudiantes();

      String[] columNames = {"codigo","nombres"}; 
      dtmEstudiantes= new DefaultTableModel(dtEstudiantes, columNames);

      String[] columNamesNotas = {"codigo","asignatura","nota"};
      dtmNotas = new DefaultTableModel(dtNotas,columNamesNotas);

      jtbEstudiantes = new JTable(dtmEstudiantes);
      jtbEstudiantes.setPreferredScrollableViewportSize(new Dimension(500, 120));

      jtbNotas = new JTable(dtmNotas);
      jtbNotas.setPreferredScrollableViewportSize(new Dimension(500,80));

      spEstudiantes = new JScrollPane(jtbEstudiantes);
      spNotas = new JScrollPane(jtbNotas);

      lblCodigo = new JLabel("Codigo");
      lblNombre = new JLabel("Nombre");

      txtCodigo = new JTextField(10);
      txtNombre = new JTextField(10);

      pnlEstudiantes = new JPanel(new GridLayout(2,2));
      pnlEstudiantes.add(lblCodigo);
      pnlEstudiantes.add(txtCodigo);
      pnlEstudiantes.add(lblNombre);
      pnlEstudiantes.add(txtNombre);

      jtbEstudiantes.addMouseListener(new MouseAdapter(){
     
      public void mouseClicked(MouseEvent e){
            fila = jtbEstudiantes.rowAtPoint(e.getPoint());
            int columna = jtbEstudiantes.columnAtPoint(e.getPoint());
            if ((fila > -1) && (columna > -1)){
                txtCodigo.setText(String.valueOf(jtbEstudiantes.getValueAt(fila,0)));
                txtNombre.setText(String.valueOf(jtbEstudiantes.getValueAt(fila,1)));

                dtNotas = us.getNotasByEstudiante(String.valueOf(jtbEstudiantes.getValueAt(fila,0)));
                int contRows = dtmNotas.getRowCount();
                for(int i=0;i<contRows;i++){
                 dtmNotas.removeRow(0);
                }
                for(int i=0;i<dtNotas.length;i++){
                 Object[] newRow={dtNotas[0],dtNotas[1],dtNotas[2]};
                    dtmNotas.addRow(newRow);
                }
            }
        }
      });

      frame.getContentPane().add(spEstudiantes,BorderLayout.NORTH);
      frame.getContentPane().add(pnlEstudiantes,BorderLayout.CENTER);
      frame.getContentPane().add(spNotas,BorderLayout.SOUTH);

      frame.pack();
      frame.setResizable(false);
      frame.setLocationRelativeTo(frame.getParent());
      frame.setVisible(true);
   }

   public void limpiarCampos(){
      txtCodigo.setText("");
      txtNombre.setText("");
   }

   public void actionPerformed(ActionEvent e){
    int resultado = -1;
   }
}