• Viernes 19 de Abril de 2024, 08:10

Autor Tema:  Dividir Clase En Clases  (Leído 1735 veces)

martin campos quintero

  • Miembro MUY activo
  • ***
  • Mensajes: 113
  • Nacionalidad: 00
    • Ver Perfil
Dividir Clase En Clases
« en: Miércoles 16 de Noviembre de 2005, 09:07 »
0
Hola amigos, tengo un problema, en la materia ing. de software nos pidieron un sistema para control dental. Nos lo pidieron por versiones y en la primera versión entregamos el directorio de pacientes y el directorio de dentistas.

El caso es que la profesora nos dijo que habiamos hecho la clase muy grande. Que sacaramos varias funciones de la clase y los metieramos como otra clase, el problema es que no sabemos como hacerlo. Les pongo el código de la clase directorio pacientes.


Código: Text
  1.  
  2.  
  3. import javax.swing.*;
  4. import java.awt.event.*;
  5. import java.awt.*;
  6. import javax.swing.table.*;
  7.  
  8. //DataBase Packages
  9.  
  10. import java.net.*;
  11. import java.io.*;
  12. import java.sql.*;
  13.  
  14. //Main Class
  15.  
  16. class directorio_pacientes extends JFrame implements ActionListener
  17. {
  18.   private Statement st;
  19.   private Connection con;
  20.  
  21.   //List of Labels
  22.  
  23.   private JLabel lblclave_anterior;
  24.   private JLabel lblclave_paciente;
  25.   private JLabel lblsexo;
  26.   private JLabel lbledad;
  27.   private JLabel lblnombre;
  28.   private JLabel lbldireccion;
  29.   private JLabel lbltelefono;
  30.  
  31.   //List of TextFields
  32.  
  33.   private JTextField txtclave_anterior;
  34.   private JTextField txtclave_paciente;
  35.   private JTextField txtsexo;
  36.   private JTextField txtedad;
  37.   private JTextField txtnombre;
  38.   private JTextField txtdireccion;
  39.   private JTextField txttelefono;
  40.  
  41.   //List of Buttons
  42.  
  43.   private JButton btnSaveAdd;
  44.   private JButton btnSaveEdit;
  45.   private JButton btnSaveDelete;
  46.   private JButton btnAdd;
  47.   private JButton btnEdit;
  48.   private JButton btnDelete;
  49.   private JButton btnExit;
  50.   private JButton btnRefresh;
  51.   private JButton btnCancel;
  52.  
  53.   //List of Panel
  54.  
  55.   private JPanel btnpanel;
  56.   private JPanel panel;
  57.   private JTable table;
  58.  
  59.   //Table
  60.  
  61.   private DefaultTableModel tmodel;
  62.  
  63.   //Container
  64.  
  65.   private Container cpane;
  66.  
  67.   directorio_pacientes(int choice)
  68.   {
  69.     switch(choice)
  70.     {
  71.       case 1:
  72.         //Initial Window
  73.  
  74.         setTitle("DIRECTORIO DE PACIENTES");
  75.         setBounds(1, 200, 800, 230);
  76.         setResizable(false);
  77.  
  78.         //cotainer
  79.  
  80.         cpane = getContentPane();
  81.  
  82.         //components
  83.  
  84.         tmodel = new DefaultTableModel();
  85.         table = new JTable(tmodel);
  86.         SetColHeader();
  87.  
  88.         btnpanel = new JPanel(new GridLayout(1, 5, 5, 0));
  89.         btnAdd = new JButton ("Agregar");
  90.         btnEdit = new JButton ("Modificar");
  91.         btnDelete = new JButton ("Eliminar");
  92.         btnRefresh = new JButton ("Actualizar");
  93.         btnExit = new JButton ("Salir");
  94.  
  95.         btnAdd.addActionListener(this);
  96.         btnEdit.addActionListener(this);
  97.         btnDelete.addActionListener(this);
  98.         btnRefresh.addActionListener(this);
  99.         btnExit.addActionListener(this);
  100.  
  101.         btnpanel.add(btnAdd);
  102.         btnpanel.add(btnEdit);
  103.         btnpanel.add(btnDelete);
  104.         btnpanel.add(btnRefresh);
  105.         btnpanel.add(btnExit);
  106.  
  107.         cpane.add(new JScrollPane(table));
  108.         cpane.add(btnpanel, BorderLayout.SOUTH);
  109.         break;
  110.       case 2:
  111.         //Appending Window
  112.  
  113.         setTitle("Agregado de datos...");
  114.         setBounds(200, 200, 500, 200);
  115.         setResizable(false);
  116.  
  117.         //cotainer
  118.  
  119.         cpane = getContentPane();
  120.         cpane.setLayout(new FlowLayout());
  121.  
  122.         //Components
  123.  
  124.         panel = new JPanel(new GridLayout(8, 1, 5, 0));
  125.  
  126.         lblclave_paciente = new JLabel(" Clave del paciente ");
  127.         lblnombre = new JLabel(" Nombre del paciente ");
  128.         lbldireccion = new JLabel(" Dirección ");
  129.         lbltelefono = new JLabel(" Teléfono ");
  130.         lbledad = new JLabel(" Edad ");
  131.         lblsexo = new JLabel(" Sexo ");
  132.  
  133.         txtclave_paciente = new JTextField(15);
  134.         txtnombre = new JTextField(15);
  135.         txtdireccion = new JTextField(15);
  136.         txttelefono = new JTextField(15);
  137.         txtedad = new JTextField(3);
  138.         txtsexo = new JTextField(1);
  139.  
  140.         panel.add(lblclave_paciente);
  141.         panel.add(txtclave_paciente);
  142.         panel.add(lblnombre);
  143.         panel.add(txtnombre);
  144.         panel.add(txtnombre);
  145.         panel.add(lbldireccion);
  146.         panel.add(txtdireccion);
  147.         panel.add(lbltelefono);
  148.         panel.add(txttelefono);
  149.         panel.add(lbledad);
  150.         panel.add(txtedad);
  151.         panel.add(lblsexo);
  152.         panel.add(txtsexo);
  153.  
  154.         btnpanel = new JPanel(new GridLayout(2, 1, 10, 5));
  155.         btnSaveAdd = new JButton ("Guardar");
  156.         btnCancel = new JButton ("Cancelar");
  157.  
  158.         btnSaveAdd.addActionListener(this);
  159.         btnCancel.addActionListener(this);
  160.  
  161.         btnpanel.add(btnSaveAdd);
  162.         btnpanel.add(btnCancel);
  163.  
  164.         cpane.add(panel);
  165.         cpane.add(btnpanel, BorderLayout.EAST);
  166.         break;
  167.       case 3:
  168.         //Editing window
  169.  
  170.         setTitle("Modificación de datos...");
  171.         setBounds(200, 200, 500, 250);
  172.         setResizable(false);
  173.  
  174.         //cotainer
  175.  
  176.         cpane = getContentPane();
  177.         cpane.setLayout(new FlowLayout());
  178.  
  179.         //Components
  180.  
  181.         panel = new JPanel(new GridLayout(10, 1, 5, 0));
  182.         lblclave_anterior = new JLabel(" Clave anterior del paciente ");
  183.         txtclave_anterior = new JTextField(15);
  184.  
  185.         lblclave_paciente = new JLabel(" Nueva clave del paciente ");
  186.         lblnombre = new JLabel(" Nombre del paciente ");
  187.         lbldireccion = new JLabel(" Dirección ");
  188.         lbltelefono = new JLabel(" Teléfono ");
  189.         lbledad = new JLabel(" Edad ");
  190.         lblsexo = new JLabel(" Sexo ");
  191.  
  192.         txtclave_paciente = new JTextField(15);
  193.         txtnombre = new JTextField(15);
  194.         txtdireccion = new JTextField(15);
  195.         txttelefono = new JTextField(15);
  196.         txtedad = new JTextField(3);
  197.         txtsexo = new JTextField(1);
  198.  
  199.         panel.add(lblclave_anterior);
  200.         panel.add(txtclave_anterior);
  201.         panel.add(lblclave_paciente);
  202.         panel.add(txtclave_paciente);
  203.         panel.add(lblnombre);
  204.         panel.add(txtnombre);
  205.         panel.add(lbldireccion);
  206.         panel.add(txtdireccion);
  207.         panel.add(lbltelefono);
  208.         panel.add(txttelefono);
  209.         panel.add(lbledad);
  210.         panel.add(txtedad);
  211.         panel.add(lblsexo);
  212.         panel.add(txtsexo);
  213.  
  214.         btnpanel = new JPanel(new GridLayout(2, 1, 10, 5));
  215.         btnSaveEdit = new JButton ("Guardar");
  216.         btnCancel = new JButton ("Cancelar");
  217.  
  218.         btnSaveEdit.addActionListener(this);
  219.         btnCancel.addActionListener(this);
  220.  
  221.         btnpanel.add(btnSaveEdit);
  222.         btnpanel.add(btnCancel);
  223.  
  224.         cpane.add(panel);
  225.         cpane.add(btnpanel, BorderLayout.EAST);
  226.         break;
  227.       case 4:
  228.         //Deleting window
  229.  
  230.         setTitle("Eliminando datos...");
  231.         setBounds(200, 200, 300, 125);
  232.         setResizable(false);
  233.  
  234.         //cotainer
  235.  
  236.         cpane = getContentPane();
  237.         cpane.setLayout(new FlowLayout());
  238.  
  239.         //Components
  240.  
  241.         panel = new JPanel(new GridLayout(2, 1, 5, 0));
  242.         lblclave_paciente = new JLabel("Clave del paciente a eliminar ");
  243.         txtclave_paciente = new JTextField(15);
  244.  
  245.         panel.add(lblclave_paciente);
  246.         panel.add(txtclave_paciente);
  247.  
  248.         btnpanel = new JPanel(new GridLayout(2, 1, 10, 5));
  249.         btnSaveDelete = new JButton ("Eliminar");
  250.         btnCancel = new JButton ("Cancelar");
  251.  
  252.         btnSaveDelete.addActionListener(this);
  253.         btnCancel.addActionListener(this);
  254.  
  255.         btnpanel.add(btnSaveDelete);
  256.         btnpanel.add(btnCancel);
  257.  
  258.         cpane.add(panel);
  259.         cpane.add(btnpanel, BorderLayout.EAST);
  260.         break;
  261.     }
  262.     //Window Properties
  263.  
  264.     setDefaultCloseOperation(HIDE_ON_CLOSE);
  265.     setVisible(true);
  266.  
  267.     //conection to DataBase
  268.  
  269.     conectar_a_bd();
  270.   }
  271.  
  272.   public void actionPerformed (ActionEvent ae)
  273.   {
  274.     if (ae.getSource() == btnAdd)
  275.     {
  276.       new directorio_pacientes(2);
  277.     }
  278.     else if (ae.getSource() == btnEdit)
  279.     {
  280.       new directorio_pacientes(3);
  281.     }
  282.     else if (ae.getSource() == btnDelete)
  283.     {
  284.       new directorio_pacientes(4);
  285.     }
  286.     else if (ae.getSource() == btnExit)
  287.     {
  288.       System.exit(0);
  289.     }
  290.     else if (ae.getSource() == btnCancel)
  291.     {
  292.       setVisible(false);
  293.     }
  294.     else if(ae.getSource() == btnSaveAdd)
  295.     {
  296.       agregar_datos(txtclave_paciente.getText(), txtnombre.getText(), txtdireccion.getText(),txtsexo.getText(), txttelefono.getText(),txtedad.getText());
  297.       txtclave_paciente.setText("");
  298.       txtnombre.setText("");
  299.       txtdireccion.setText("");
  300.       txttelefono.setText("");
  301.       txtedad.setText("");
  302.       txtsexo.setText("");
  303.     }
  304.     else if(ae.getSource() == btnSaveEdit)
  305.     {
  306.       modificar_datos(txtclave_paciente.getText(), txtnombre.getText(), txtdireccion.getText(),txttelefono.getText(), txtclave_anterior.getText(),txtedad.getText(), txtsexo.getText());
  307.       txtclave_anterior.setText("");
  308.       txtclave_paciente.setText("");
  309.       txtnombre.setText("");
  310.       txtdireccion.setText("");
  311.       txttelefono.setText("");
  312.     }
  313.     else if(ae.getSource() == btnSaveDelete)
  314.     {
  315.       eliminar_datos(txtclave_paciente.getText());
  316.       txtclave_paciente.setText("");
  317.     }
  318.     else if(ae.getSource() == btnRefresh)
  319.     {
  320.       extraer_datos();
  321.     }
  322.   }
  323.  
  324.   public static void main(String arg[])
  325.   {
  326.     directorio_pacientes c = new directorio_pacientes(1);
  327.     c.extraer_datos();
  328.   }
  329.  
  330.   private void SetColHeader()
  331.   {
  332.     tmodel.addColumn("Clave del paciente");
  333.     tmodel.addColumn("Nombre");
  334.     tmodel.addColumn("Dirección");
  335.     tmodel.addColumn("Sexo");
  336.     tmodel.addColumn("Teléfono");
  337.     tmodel.addColumn("Edad");
  338.  
  339.   }
  340.  
  341.   private void conectar_a_bd ()
  342.   {
  343.     try
  344.     {
  345.       String dsn = "Medi";
  346.  
  347.       //load driver
  348.       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  349.  
  350.       //make connection
  351.       con = DriverManager.getConnection("jdbc:odbc:" + dsn);
  352.  
  353.       //create statement
  354.       st = con.createStatement();
  355.     }
  356.     catch (Exception e) {System.out.println(e);}
  357.   }
  358.  
  359.   private void agregar_datos (String clave, String nombre, String direccion, String telefono, String edad, String sexo)
  360.   {
  361.     try
  362.     {
  363.       //prepare statement
  364.       String qry = "Insert into directorio_paciente values (?, ?, ?, ?, ?, ?)";
  365.       System.out.println(clave + "\t"+nombre+ "\t"+direccion+ "\t"+telefono+ "\t"+edad+ "\t"+sexo);
  366.       //System.out.println("Read only "+con.isReadOnly());
  367.       //System.out.println("Closed "+con.isClosed());
  368.  
  369.       PreparedStatement ps = con.prepareStatement(qry);
  370.  
  371.       ps.setString(1, clave);
  372.       ps.setString(2, nombre);
  373.       ps.setString(3, direccion);
  374.       ps.setString(4,telefono);
  375.       ps.setString(5,edad);
  376.       ps.setString(6,sexo);
  377.  
  378.       ps.executeUpdate();
  379.     }
  380.     catch(Exception e) {System.out.println(e + "\t" + e.getMessage());  }
  381.   }
  382.  
  383.   private void modificar_datos (String clave, String nombre, String direccion, String telefono, String clave_anterior, String edad, String sexo)
  384.   {
  385.     try
  386.     {
  387.       //prepare statement
  388.       String qry = "Update directorio_paciente set clave = ?, nombre = ?, direccion = ?, sexo = ?, telefono = ?, edad = ? where clave = ?";
  389.       PreparedStatement ps = con.prepareStatement(qry);
  390.  
  391.       ps.setString(1, clave);
  392.       ps.setString(2, nombre);
  393.       ps.setString(3, direccion);
  394.       ps.setString(4, sexo);
  395.       ps.setString(5, telefono);
  396.       ps.setString(6, edad);
  397.      
  398.  
  399.       ps.setString(7, clave_anterior);
  400.  
  401.       ps.executeUpdate();
  402.     }
  403.     catch(Exception e) {System.out.println(e);  }
  404.   }
  405.  
  406.   private void eliminar_datos (String cond)
  407.   {
  408.     try
  409.     {
  410.       //prepare statement
  411.       String qry = "Delete from directorio_paciente where clave = ?";
  412.       PreparedStatement ps = con.prepareStatement(qry);
  413.  
  414.       ps.setString(1, cond);
  415.  
  416.       ps.executeUpdate();
  417.     }
  418.     catch(Exception e) {System.out.println(e);  }
  419.   }
  420.  
  421.   private void extraer_datos ()
  422.   {
  423.     try
  424.     {
  425.       int row = tmodel.getRowCount();
  426.       while(row > 0)
  427.       {
  428.         row--;
  429.         tmodel.removeRow(row);
  430.       }
  431.  
  432.       //execute query
  433.       ResultSet rs = st.executeQuery("Select * from directorio_paciente");
  434.  
  435.       //get metadata
  436.       ResultSetMetaData md = rs.getMetaData();
  437.       int colcount = md.getColumnCount();
  438.  
  439.       Object[] data = new Object[colcount];
  440.       //extracting data
  441.  
  442.       while (rs.next())
  443.       {
  444.         for (int i=1; i<=colcount; i++)
  445.         {
  446.           data[i-1] = rs.getString(i);
  447.         }
  448.         tmodel.addRow(data);
  449.       }
  450.     }
  451.     catch(Exception e) {System.out.println(e);  }
  452.   }
  453. }
  454.  
  455.  
  456.  


Nos dijo que sacaramos de la clase la función conectar_a_bd, agregar_datos, eliminar_datos, modificar_datos. Y que los metieramos a otra clase llamada gestion_de_bd.

Y que también las instrucciones que se encuentran entre los cases(o sea las pantallas)  las llevemos a otra clase.

El problema es que no sabemos como vamos a llamar a las otras clases desde la clase directorio de pacientes.

Si pudieran ayudarnos se los agradeceriamos mucho.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

Güorker

  • Miembro MUY activo
  • ***
  • Mensajes: 383
    • Ver Perfil
Re: Dividir Clase En Clases
« Respuesta #1 en: Miércoles 16 de Noviembre de 2005, 12:42 »
0
Hola,

Lo que podeis hacer es lo siguiente:

- Crear una clase estatica "gestion_de_BD", para no necesitar crear instancias de esa clase (Recordad que sus metodos deben ser tambien estaticos):
Código: Text
  1.  
  2. static class gestion_de_BD
  3. {
  4. ...
  5. public static  void conectar_a_bd ()
  6. {...}
  7. public static void ....
  8. }
  9.  
  10.  

Cuando tengais todos los metodos en esa clase, para llamar a sus metodos desde otra clase:
Código: Text
  1.  
  2. ....
  3. gestion_de_BD. agregar_datos(txtclave_paciente.getText(),.... );
  4. ...
  5.  
  6.  

Espero haber ayudado en algo. Saludos
[size=109]Ondo ibili, gutxi gastau eta bueltak amari[/size]
[size=109]Pasalo bien, gasta poco y las vueltas a tu madre[/size]

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Dividir Clase En Clases
« Respuesta #2 en: Miércoles 16 de Noviembre de 2005, 14:04 »
0
asi es,
de heco para el directorio de pacientes y de dentistas se hace recomendable:

1- clase persona
2- una clase dentista que herede de la clase persona
3- una clase paciente que herede de la clase persona
4- una clase directorio de personas, de la cual deberias instanciar  para crear directorio de pacientes y de dentistas
5- una clase que relaiza los trabajos de conexion e intercambio de datos con la base de datos.
6- otra para que maneje el Form o sea la interfaz grafica
7- Tal vez Una clase que que realice los procesos de computo que se requieran.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

martin campos quintero

  • Miembro MUY activo
  • ***
  • Mensajes: 113
  • Nacionalidad: 00
    • Ver Perfil
Re: Dividir Clase En Clases
« Respuesta #3 en: Jueves 17 de Noviembre de 2005, 23:41 »
0
Hola gracias por su ayuda, ya comprobé que si funciona así como me lo plantearon, bueno funciona hasta cierto punto. El problema que nos surgió es que como la conexión con la base de datos la creamos dentro de conectar_a_bd y la asignamos a la variable "con", como podemos hacer para que las otras clases obtengan el valor de "con", bueno en este caso las otras funciones que están en la clase gestion_de_bd. Modificamos el código y nos surgieron varios errores.


Como ya se habran dado cuenta jeje, somos primerizos en java :S.


Les pido un favor, si no seria mucha molestia. Que me ayudaran a corregir lo de este archivo, directorio_pacientes. Lo que pasa es que tenemos que hacer un sistema para dentistas y pues si no sabemos como hacer esto pues estamos fritos jeje. O si es mucha molestia lo de corregir el archivo pues siquiera me den un ejemplo en código fuente donde aparezca esto que necesitamos.


Código modificado y con varios errores :s



Código: Text
  1.  
  2.  
  3. import javax.swing.*;
  4. import java.awt.event.*;
  5. import java.awt.*;
  6. import javax.swing.table.*;
  7.  
  8. //DataBase Packages
  9.  
  10. import java.net.*;
  11. import java.io.*;
  12. import java.sql.*;
  13.  
  14. //Main Class
  15.  
  16. class directorio_pacientes extends JFrame implements ActionListener
  17. {
  18.   private Statement st;
  19.   private Connection con;
  20.  
  21.   //List of Labels
  22.  
  23.   private JLabel lblclave_anterior;
  24.   private JLabel lblclave_paciente;
  25.   private JLabel lblsexo;
  26.   private JLabel lbledad;
  27.   private JLabel lblnombre;
  28.   private JLabel lbldireccion;
  29.   private JLabel lbltelefono;
  30.  
  31.   //List of TextFields
  32.  
  33.   private JTextField txtclave_anterior;
  34.   private JTextField txtclave_paciente;
  35.   private JTextField txtsexo;
  36.   private JTextField txtedad;
  37.   private JTextField txtnombre;
  38.   private JTextField txtdireccion;
  39.   private JTextField txttelefono;
  40.  
  41.   //List of Buttons
  42.  
  43.   private JButton btnSaveAdd;
  44.   private JButton btnSaveEdit;
  45.   private JButton btnSaveDelete;
  46.   private JButton btnAdd;
  47.   private JButton btnEdit;
  48.   private JButton btnDelete;
  49.   private JButton btnExit;
  50.   private JButton btnRefresh;
  51.   private JButton btnCancel;
  52.  
  53.   //List of Panel
  54.  
  55.   private JPanel btnpanel;
  56.   private JPanel panel;
  57.   private JTable table;
  58.  
  59.   //Table
  60.  
  61.   private DefaultTableModel tmodel;
  62.  
  63.   //Container
  64.  
  65.   private Container cpane;
  66.  
  67.   directorio_pacientes(int choice)
  68.   {
  69.     switch(choice)
  70.     {
  71.       case 1:
  72.         //Initial Window
  73.  
  74.         setTitle("DIRECTORIO DE PACIENTES");
  75.         setBounds(1, 200, 800, 230);
  76.         setResizable(false);
  77.  
  78.         //cotainer
  79.  
  80.         cpane = getContentPane();
  81.  
  82.         //components
  83.  
  84.         tmodel = new DefaultTableModel();
  85.         table = new JTable(tmodel);
  86.         SetColHeader();
  87.  
  88.         btnpanel = new JPanel(new GridLayout(1, 5, 5, 0));
  89.         btnAdd = new JButton ("Agregar");
  90.         btnEdit = new JButton ("Modificar");
  91.         btnDelete = new JButton ("Eliminar");
  92.         btnRefresh = new JButton ("Actualizar");
  93.         btnExit = new JButton ("Salir");
  94.  
  95.         btnAdd.addActionListener(this);
  96.         btnEdit.addActionListener(this);
  97.         btnDelete.addActionListener(this);
  98.         btnRefresh.addActionListener(this);
  99.         btnExit.addActionListener(this);
  100.  
  101.         btnpanel.add(btnAdd);
  102.         btnpanel.add(btnEdit);
  103.         btnpanel.add(btnDelete);
  104.         btnpanel.add(btnRefresh);
  105.         btnpanel.add(btnExit);
  106.  
  107.         cpane.add(new JScrollPane(table));
  108.         cpane.add(btnpanel, BorderLayout.SOUTH);
  109.         break;
  110.       case 2:
  111.         //Appending Window
  112.  
  113.         setTitle("Agregado de datos...");
  114.         setBounds(200, 200, 500, 200);
  115.         setResizable(false);
  116.  
  117.         //cotainer
  118.  
  119.         cpane = getContentPane();
  120.         cpane.setLayout(new FlowLayout());
  121.  
  122.         //Components
  123.  
  124.         panel = new JPanel(new GridLayout(8, 1, 5, 0));
  125.  
  126.         lblclave_paciente = new JLabel(" Clave del paciente ");
  127.         lblnombre = new JLabel(" Nombre del paciente ");
  128.         lbldireccion = new JLabel(" Dirección ");
  129.         lbltelefono = new JLabel(" Teléfono ");
  130.         lbledad = new JLabel(" Edad ");
  131.         lblsexo = new JLabel(" Sexo ");
  132.  
  133.         txtclave_paciente = new JTextField(15);
  134.         txtnombre = new JTextField(15);
  135.         txtdireccion = new JTextField(15);
  136.         txttelefono = new JTextField(15);
  137.         txtedad = new JTextField(3);
  138.         txtsexo = new JTextField(1);
  139.  
  140.         panel.add(lblclave_paciente);
  141.         panel.add(txtclave_paciente);
  142.         panel.add(lblnombre);
  143.         panel.add(txtnombre);
  144.         panel.add(txtnombre);
  145.         panel.add(lbldireccion);
  146.         panel.add(txtdireccion);
  147.         panel.add(lbltelefono);
  148.         panel.add(txttelefono);
  149.         panel.add(lbledad);
  150.         panel.add(txtedad);
  151.         panel.add(lblsexo);
  152.         panel.add(txtsexo);
  153.  
  154.         btnpanel = new JPanel(new GridLayout(2, 1, 10, 5));
  155.         btnSaveAdd = new JButton ("Guardar");
  156.         btnCancel = new JButton ("Cancelar");
  157.  
  158.         btnSaveAdd.addActionListener(this);
  159.         btnCancel.addActionListener(this);
  160.  
  161.         btnpanel.add(btnSaveAdd);
  162.         btnpanel.add(btnCancel);
  163.  
  164.         cpane.add(panel);
  165.         cpane.add(btnpanel, BorderLayout.EAST);
  166.         break;
  167.       case 3:
  168.         //Editing window
  169.  
  170.         setTitle("Modificación de datos...");
  171.         setBounds(200, 200, 500, 250);
  172.         setResizable(false);
  173.  
  174.         //cotainer
  175.  
  176.         cpane = getContentPane();
  177.         cpane.setLayout(new FlowLayout());
  178.  
  179.         //Components
  180.  
  181.         panel = new JPanel(new GridLayout(10, 1, 5, 0));
  182.         lblclave_anterior = new JLabel(" Clave anterior del paciente ");
  183.         txtclave_anterior = new JTextField(15);
  184.  
  185.         lblclave_paciente = new JLabel(" Nueva clave del paciente ");
  186.         lblnombre = new JLabel(" Nombre del paciente ");
  187.         lbldireccion = new JLabel(" Dirección ");
  188.         lbltelefono = new JLabel(" Teléfono ");
  189.         lbledad = new JLabel(" Edad ");
  190.         lblsexo = new JLabel(" Sexo ");
  191.  
  192.         txtclave_paciente = new JTextField(15);
  193.         txtnombre = new JTextField(15);
  194.         txtdireccion = new JTextField(15);
  195.         txttelefono = new JTextField(15);
  196.         txtedad = new JTextField(3);
  197.         txtsexo = new JTextField(1);
  198.  
  199.         panel.add(lblclave_anterior);
  200.         panel.add(txtclave_anterior);
  201.         panel.add(lblclave_paciente);
  202.         panel.add(txtclave_paciente);
  203.         panel.add(lblnombre);
  204.         panel.add(txtnombre);
  205.         panel.add(lbldireccion);
  206.         panel.add(txtdireccion);
  207.         panel.add(lbltelefono);
  208.         panel.add(txttelefono);
  209.         panel.add(lbledad);
  210.         panel.add(txtedad);
  211.         panel.add(lblsexo);
  212.         panel.add(txtsexo);
  213.  
  214.         btnpanel = new JPanel(new GridLayout(2, 1, 10, 5));
  215.         btnSaveEdit = new JButton ("Guardar");
  216.         btnCancel = new JButton ("Cancelar");
  217.  
  218.         btnSaveEdit.addActionListener(this);
  219.         btnCancel.addActionListener(this);
  220.  
  221.         btnpanel.add(btnSaveEdit);
  222.         btnpanel.add(btnCancel);
  223.  
  224.         cpane.add(panel);
  225.         cpane.add(btnpanel, BorderLayout.EAST);
  226.         break;
  227.       case 4:
  228.         //Deleting window
  229.  
  230.         setTitle("Eliminando datos...");
  231.         setBounds(200, 200, 300, 125);
  232.         setResizable(false);
  233.  
  234.         //cotainer
  235.  
  236.         cpane = getContentPane();
  237.         cpane.setLayout(new FlowLayout());
  238.  
  239.         //Components
  240.  
  241.         panel = new JPanel(new GridLayout(2, 1, 5, 0));
  242.         lblclave_paciente = new JLabel("Clave del paciente a eliminar ");
  243.         txtclave_paciente = new JTextField(15);
  244.  
  245.         panel.add(lblclave_paciente);
  246.         panel.add(txtclave_paciente);
  247.  
  248.         btnpanel = new JPanel(new GridLayout(2, 1, 10, 5));
  249.         btnSaveDelete = new JButton ("Eliminar");
  250.         btnCancel = new JButton ("Cancelar");
  251.  
  252.         btnSaveDelete.addActionListener(this);
  253.         btnCancel.addActionListener(this);
  254.  
  255.         btnpanel.add(btnSaveDelete);
  256.         btnpanel.add(btnCancel);
  257.  
  258.         cpane.add(panel);
  259.         cpane.add(btnpanel, BorderLayout.EAST);
  260.         break;
  261.     }
  262.     //Window Properties
  263.  
  264.     setDefaultCloseOperation(HIDE_ON_CLOSE);
  265.     setVisible(true);
  266.  
  267.     //conection to DataBase
  268.  
  269.     gestion_de_bd.conectar_a_bd();
  270.   }
  271.  
  272.   public void actionPerformed (ActionEvent ae)
  273.   {
  274.     if (ae.getSource() == btnAdd)
  275.     {
  276.       new directorio_pacientes(2);
  277.     }
  278.     else if (ae.getSource() == btnEdit)
  279.     {
  280.       new directorio_pacientes(3);
  281.     }
  282.     else if (ae.getSource() == btnDelete)
  283.     {
  284.       new directorio_pacientes(4);
  285.     }
  286.     else if (ae.getSource() == btnExit)
  287.     {
  288.       System.exit(0);
  289.     }
  290.     else if (ae.getSource() == btnCancel)
  291.     {
  292.       setVisible(false);
  293.     }
  294.     else if(ae.getSource() == btnSaveAdd)
  295.     {
  296.       gestion_de_bd.agregar_datos(txtclave_paciente.getText(), txtnombre.getText(), txtdireccion.getText(),txtsexo.getText(), txttelefono.getText(),txtedad.getText());
  297.       txtclave_paciente.setText("");
  298.       txtnombre.setText("");
  299.       txtdireccion.setText("");
  300.       txttelefono.setText("");
  301.       txtedad.setText("");
  302.       txtsexo.setText("");
  303.     }
  304.     else if(ae.getSource() == btnSaveEdit)
  305.     {
  306.       gestion_de_bd.modificar_datos(txtclave_paciente.getText(), txtnombre.getText(), txtdireccion.getText(),txttelefono.getText(), txtclave_anterior.getText(),txtedad.getText(), txtsexo.getText());
  307.       txtclave_anterior.setText("");
  308.       txtclave_paciente.setText("");
  309.       txtnombre.setText("");
  310.       txtdireccion.setText("");
  311.       txttelefono.setText("");
  312.     }
  313.     else if(ae.getSource() == btnSaveDelete)
  314.     {
  315.       gestion_de_bd.eliminar_datos(txtclave_paciente.getText());
  316.       txtclave_paciente.setText("");
  317.     }
  318.     else if(ae.getSource() == btnRefresh)
  319.     {
  320.       gestion_de_bd.extraer_datos();
  321.     }
  322.   }
  323.  
  324.   public static void main(String arg[])
  325.   {
  326.     directorio_pacientes c = new directorio_pacientes(1);
  327.     gestion_de_bd.extraer_datos();
  328.     //c.extraer_datos();
  329.   }
  330.  
  331.   private void SetColHeader()
  332.   {
  333.     tmodel.addColumn("Clave del paciente");
  334.     tmodel.addColumn("Nombre");
  335.     tmodel.addColumn("Dirección");
  336.     tmodel.addColumn("Sexo");
  337.     tmodel.addColumn("Teléfono");
  338.     tmodel.addColumn("Edad");
  339.  
  340.   }
  341.  
  342. /*  private void conectar_a_bd ()
  343.   {
  344.     try
  345.     {
  346.       String dsn = "Medi";
  347.  
  348.       //load driver
  349.       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  350.  
  351.       //make connection
  352.       con = DriverManager.getConnection("jdbc:odbc:" + dsn);
  353.  
  354.       //create statement
  355.       st = con.createStatement();
  356.     }
  357.     catch (Exception e) {System.out.println(e);}
  358.   }
  359.  
  360. */
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369. }
  370.  
  371.  
  372. class gestion_de_bd
  373. {
  374.     private Statement st;
  375.   private Connection con;
  376.  
  377.   public static void conectar_a_bd ()
  378.   {
  379.  
  380.     try
  381.     {
  382.       String dsn = "Medi";
  383.  
  384.       //load driver
  385.       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  386.  
  387.       //make connection
  388.       con = DriverManager.getConnection("jdbc:odbc:" + dsn);
  389.  
  390.       //create statement
  391.       st = con.createStatement();
  392.     }
  393.     catch (Exception e) {System.out.println(e);}    
  394.    
  395.   }
  396.  
  397.  
  398.  
  399.   public static void agregar_datos (String clave, String nombre, String direccion, String telefono, String edad, String sexo)
  400.   {
  401.     try
  402.     {
  403.       //prepare statement
  404.       String qry = "Insert into directorio_paciente values (?, ?, ?, ?, ?, ?)";
  405.       System.out.println(clave + "\t"+nombre+ "\t"+direccion+ "\t"+telefono+ "\t"+edad+ "\t"+sexo);
  406.       //System.out.println("Read only "+con.isReadOnly());
  407.       //System.out.println("Closed "+con.isClosed());
  408.  
  409.       PreparedStatement ps = con.prepareStatement(qry);
  410.  
  411.       ps.setString(1, clave);
  412.       ps.setString(2, nombre);
  413.       ps.setString(3, direccion);
  414.       ps.setString(4,telefono);
  415.       ps.setString(5,edad);
  416.       ps.setString(6,sexo);
  417.  
  418.       ps.executeUpdate();
  419.     }
  420.     catch(Exception e) {System.out.println(e + "\t" + e.getMessage());  }
  421.   }
  422.  
  423.  
  424.  
  425.   public static void modificar_datos (String clave, String nombre, String direccion, String telefono, String clave_anterior, String edad, String sexo)
  426.   {
  427.     try
  428.     {
  429.       //prepare statement
  430.       String qry = "Update directorio_paciente set clave = ?, nombre = ?, direccion = ?, sexo = ?, telefono = ?, edad = ? where clave = ?";
  431.       PreparedStatement ps = con.prepareStatement(qry);
  432.  
  433.       ps.setString(1, clave);
  434.       ps.setString(2, nombre);
  435.       ps.setString(3, direccion);
  436.       ps.setString(4, sexo);
  437.       ps.setString(5, telefono);
  438.       ps.setString(6, edad);
  439.      
  440.  
  441.       ps.setString(7, clave_anterior);
  442.  
  443.       ps.executeUpdate();
  444.     }
  445.     catch(Exception e) {System.out.println(e);  }
  446.   }
  447.  
  448.  
  449.   public static void eliminar_datos (String cond)
  450.   {
  451.     try
  452.     {
  453.       //prepare statement
  454.       String qry = "Delete from directorio_paciente where clave = ?";
  455.       PreparedStatement ps = con.prepareStatement(qry);
  456.  
  457.       ps.setString(1, cond);
  458.  
  459.       ps.executeUpdate();
  460.     }
  461.     catch(Exception e) {System.out.println(e);  }
  462.   }
  463.  
  464.  
  465.  
  466.   public static void extraer_datos ()
  467.   {
  468.     try
  469.     {
  470.       int row = tmodel.getRowCount();
  471.       while(row > 0)
  472.       {
  473.         row--;
  474.         tmodel.removeRow(row);
  475.       }
  476.  
  477.       //execute query
  478.       ResultSet rs = st.executeQuery("Select * from directorio_paciente");
  479.  
  480.       //get metadata
  481.       ResultSetMetaData md = rs.getMetaData();
  482.       int colcount = md.getColumnCount();
  483.  
  484.       Object[] data = new Object[colcount];
  485.       //extracting data
  486.  
  487.       while (rs.next())
  488.       {
  489.         for (int i=1; i<=colcount; i++)
  490.         {
  491.           data[i-1] = rs.getString(i);
  492.         }
  493.         tmodel.addRow(data);
  494.       }
  495.     }
  496.     catch(Exception e) {System.out.println(e);  }
  497.   }
  498.  
  499.  
  500. }
  501.  
  502.  
  503.  


Espero me puedan ayudar, porque ya estuvimos varias horas tratando de hacerlo y no pudimos :S

Les adjunto la Base de datos cuyo nombre en "odbc" es medi y también les adjunto el código que hicimos
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.