Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - CoYoTeDaN

#1
Creo que el problema es del while, que da algun tipo de conflico con el if, pero si quito el while solo lee la primera fila de la columna de la tabla de sql, y nose pq.
#2
Hola buenas, tengo un problema con un programa que estoy intentando hacer en java y que como soy bastante nuevo en esto no consigo encontrar el error, si alguien pudiera ayudarme por favor, el problema es el siguiente:

Intento que compare un dato de la tabla de sql, para ello tengo un textfield llamado tf5 donde metere un valor ej: silla y quiero que lo busque en la tabla sql la columna descripcion y si existe dicho valor me devuelva mediante la condicion siguiente "el dato ya existe" o "el dato no existe", el programa funciona bien siempre que el dato coincida, pero si el dato no coincide no ejecuta el else.

Yo pienso que es debido a que cuando el dato de la tabla coincide tiene un valor para darle al string "Comparadato2" pero cuando no hay valor que coger no puede comparar la igualdad, he intantado de darle previamente un valor a Comparadato2 pero igualmente no funciona.

La otra pregunta es si yo en el while pongo directalmente como condicion registro2.next() terminara el while cuando termine de leer la tabla entera o si se producira bucle que ejecute todo el rato la tabla.

Pongo a continuacion la parte del codigo que me da problemas y mas abajo el codigo entero.

Agregar = new JButton("Añadir articulo/s");

       Agregar.addActionListener(new ActionListener()
      
       {

        public void actionPerformed(ActionEvent arg0) {
        Resultado.setText("");

           try {
           Connection conexion2=DriverManager.getConnection("jdbc:mysql://localhost/tienda","root" ,"");
          Statement comando2=conexion2.createStatement();
          ResultSet registro2 = comando2.executeQuery("select Descripcion from articulos where Descripcion= '" + tf5.getText() + "'");
              
         
          int i = 20;
         
             
         while (i > 0) {
            
            registro2.next();
            String ComparaDato1 = tf5.getText();
            String ComparaDato2 = registro2.getString("Descripcion");
            
            //el programa falla pq cuando no hay un objeto que coincida con el de la tabla comparadato2 no tiene valor y no puede compararlo
            
            
             if  (ComparaDato1.equalsIgnoreCase(ComparaDato2))    
              {
           System.out.printf("el dato ya existe");
              i=0;
              }
             else{
             i--;;
             System.out.printf("el dato no existe");
             }
               }



Ahora pongo el codigo entero por si alguien lo quiere ejecutar.
         


package Tienda;
   
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.lang.String;
import java.awt.event.*;


   public class Tienda extends JFrame
   
   {

     private JPanel contenido;
     private JTextField tf1; // tf1 es texto a consultar
     private JTextField tf2; // tf2 es articulo consultado
     private JTextField tf3; // tf3 es precio consultado
     private JTextField tf4; // tf4 es stock consultado
     private JTextField tf5; // tf5 es el articulo a agregar
     private JTextField tf6; // tf6 es el precio a agregar
     private JTextField tf7; // tf7 es la cantidad a agregar
     private JTextField tf8; // tf8 es el articulo a eliminar
     private JTextField tf9; // tf10 es la cantidad a eliminar
     private JButton Consultar;
     private JButton Agregar;
     private JLabel ConsultarCodigo;
     private JLabel AgregarCodigo;
     private JLabel EliminarCodigo;
     private JLabel Resultado;
    
   
   

   
    
   
    
     public static void main(String[] args) {
       
       
       
   
       
       
       EventQueue.invokeLater(new Runnable() {
         public void run() {
           try {
             Tienda frame = new Tienda();
             frame.setSize(570, 450);
             frame.setLocationRelativeTo(null);
             frame.setVisible(true);
           } catch (Exception e) {
             e.printStackTrace();
           }
         }
       });
     }

   
     public Tienda() {
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       contenido = new JPanel();
       contenido.setBorder(new EmptyBorder(5, 5, 5, 5));
       setContentPane(contenido);
       contenido.setLayout(null);
      
      
      
      
       // tf1.setEditable(false);   para decir que el texto no se puede editar
      
       //
       // CONSULTAR
       //
      
      
       ConsultarCodigo = new JLabel("Ingrese el articulo a Consultar:");
       ConsultarCodigo.setBounds(60, 30, 243, 14);
       contenido.add(ConsultarCodigo);
      
       JLabel DescripcionDelArtculo = new JLabel("Consultar artículo:");
       DescripcionDelArtculo.setBounds(23, 65, 193, 14);
       contenido.add(DescripcionDelArtculo);
      
       tf1 = new JTextField();
       tf1.setBounds(140, 63, 120, 20);
       contenido.add(tf1);
       tf1.setColumns(10);
      
       // Articulo
      
       JLabel Articulo = new JLabel("Artículo:");
       Articulo.setBounds(293, 37, 95, 14);
       contenido.add(Articulo);
      
       tf2 = new JTextField();
       tf2.setBounds(380, 32, 150, 20);
       contenido.add(tf2);
       tf2.setColumns(10);
       tf2.setEditable(false);

      
       // Precio
      
       JLabel Precio = new JLabel("Precio:");
       Precio.setBounds(293, 77, 95, 14);
       contenido.add(Precio);
      
       tf3 = new JTextField();
       tf3.setBounds(380, 72, 150, 20);
       contenido.add(tf3);
       tf3.setColumns(10);
       tf3.setEditable(false);

      
       // Stock
      
       JLabel Stock = new JLabel("Stock:");
       Stock.setBounds(293, 117, 95, 14);
       contenido.add(Stock);
      
       tf4 = new JTextField();
       tf4.setBounds(380, 112, 150, 20);
       contenido.add(tf4);
       tf4.setColumns(10);
       tf4.setEditable(false);
      
      
       //
       // AGREGAR
       //
      
      
       AgregarCodigo = new JLabel("Agregar nuevo Artículo:");
       AgregarCodigo.setBounds(60, 170, 243, 14);
       contenido.add(AgregarCodigo);
      
       // Agregar Articulo
      
      
       JLabel ArticuloAdd = new JLabel("Artículo:");
       ArticuloAdd.setBounds(23, 210, 95, 14);
       contenido.add(ArticuloAdd);
      
       tf5 = new JTextField();
       tf5.setBounds(110, 210, 150, 20);
       contenido.add(tf5);
       tf5.setColumns(10);
      
       // Agregar Precio
      
      
       JLabel PrecioAdd = new JLabel("Precio:");
       PrecioAdd.setBounds(23, 250, 95, 14);
       contenido.add(PrecioAdd);
      
       tf6 = new JTextField();
       tf6.setBounds(110, 250, 150, 20);
       contenido.add(tf6);
       tf6.setColumns(10);
      
       // Agregar Stock
      
      
       JLabel CantidadAdd = new JLabel("Cantidad:");
       CantidadAdd.setBounds(23, 290, 95, 14);
       contenido.add(CantidadAdd);
      
       tf7 = new JTextField();
       tf7.setBounds(110, 290, 150, 20);
       contenido.add(tf7);
       tf7.setColumns(10);
      
       //
       // ELIMINAR
       //
      
       EliminarCodigo = new JLabel("Eliminar Artículo:");
       EliminarCodigo.setBounds(360, 170, 243, 14);
       contenido.add(EliminarCodigo);
      
      
       // Eliminar Articulo
      
      
       JLabel ArticuloDel = new JLabel("Artículo:");
       ArticuloDel.setBounds(293, 225, 95, 14);
       contenido.add(ArticuloDel);
      
       tf8 = new JTextField();
       tf8.setBounds(380, 225, 150, 20);
       contenido.add(tf8);
       tf8.setColumns(10);
      

       // Eliminar Cantidad
      
      
       JLabel CantidadDel = new JLabel("Cantidad:");
       CantidadDel.setBounds(293, 275, 95, 14);
       contenido.add(CantidadDel);
      
       tf9 = new JTextField();
       tf9.setBounds(380, 275, 150, 20);
       contenido.add(tf9);
       tf9.setColumns(10);
      
      
       Resultado = new JLabel("");
       Resultado.setBounds(150, 380, 400, 14);
       contenido.add(Resultado);
      

       cargarDriver();

      
       // Boton Consultar
      
       Consultar = new JButton("Consultar");
       Consultar.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent arg0) {
           Resultado.setText("");
           tf2.setText("No existe un articulo");
           tf3.setText("0");
           tf4.setText("0");
           try {
             Connection conexion=DriverManager.getConnection("jdbc:mysql://localhost/tienda","root" ,"");
             Statement comando=conexion.createStatement();
             ResultSet registro = comando.executeQuery("select Descripcion,Precio,Stock from articulos where Descripcion= '" + tf1.getText() + "'");
             if (registro.next()==true) {
                 tf2.setText(registro.getString("Descripcion"));
                 tf3.setText(registro.getString("Precio"));
                 tf4.setText(registro.getString("Stock"));
                 Resultado.setText("Articulo encontrado");
               } else {
                 Resultado.setText("No existe un artículo con dicha descripcion");
               }
             conexion.close();
           } catch(SQLException ex){
             setTitle(ex.toString());
           }
         }
       });
       Consultar.setBounds(45, 100, 193, 30);
       contenido.add(Consultar);

      
      
      
      
      
      
      
      
      
       // Boton de Agregar
      
       Agregar = new JButton("Añadir articulo/s");

       Agregar.addActionListener(new ActionListener()
      
       {

        public void actionPerformed(ActionEvent arg0) {
        Resultado.setText("");

           try {
           Connection conexion2=DriverManager.getConnection("jdbc:mysql://localhost/tienda","root" ,"");
          Statement comando2=conexion2.createStatement();
          ResultSet registro2 = comando2.executeQuery("select Descripcion from articulos where Descripcion= '" + tf5.getText() + "'");
              
         
          int i = 20;
         
             
         while (i > 0) {
            
            registro2.next();
            String ComparaDato1 = tf5.getText();
      //      String ComparaDato2 = "Mesa";
            String ComparaDato2 = registro2.getString("Descripcion");
            
            //el programa falla pq cuando no hay un objeto que coincida con el de la tabla comparadato2 no tiene valor y no puede compararlo
            
            
             if  (ComparaDato1.equalsIgnoreCase(ComparaDato2))    
              {
           System.out.printf("el dato ya existe");
              i=0;
              }
             else{
             i--;;
             System.out.printf("el dato no existe");
             }
               }
         
      
         
         
      

         
         //           Connection conexion=DriverManager.getConnection("jdbc:mysql://localhost/tienda","root" ,"");
         //           Statement comando=conexion.createStatement();
         //           comando.executeUpdate("insert into articulos(Descripcion,Precio,Stock) values ('"+tf5.getText()+"',"+tf6.getText()+","+tf7.getText()+")");
         //           conexion.close();
      //              Resultado.setText("Se ha añadido el articulo");
         //           tf5.setText("");
      //              tf6.setText("");
         //           tf7.setText("");
             
         

             
      
            
            }catch(SQLException ex){
             setTitle(ex.toString());
      
            }
           }
       });
       Agregar.setBounds(40, 330, 193, 30);
       contenido.add(Agregar);

      
       // Boton de Eliminar
      
      
       JButton Eliminar = new JButton("Eliminar articulo");
       Eliminar.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent arg0) {
           Resultado.setText("");
           try {
             Connection conexion=DriverManager.getConnection("jdbc:mysql://localhost/tienda","root" ,"");
             Statement comando=conexion.createStatement();
             int cantidad = comando.executeUpdate("delete from articulos where descripcion= '" + tf8.getText() + "'");
             if (cantidad==1) {
               tf8.setText("");
               tf9.setText("");       
               Resultado.setText("Se borro el artículo con dicha descripción");
             } else {
               Resultado.setText("No existe un artículo con dicha descripción");
             }
             conexion.close();
           } catch(SQLException ex){
             setTitle(ex.toString());
           }       
         }
       });
       Eliminar.setBounds(320, 330, 193, 30);
       contenido.add(Eliminar);
       cargarDriver();
      
     }
     private void cargarDriver() {
       try {
         Class.forName("com.mysql.jdbc.Driver");
       }catch(Exception ex) {
         setTitle(ex.toString());
       }
     }
   }


El boton eliminar sucede lo mismo pero si consigo que funcione el boton agregar el otro es igual. No olvideis agregar mysql connector java si quereis ejecutar el programa. Muchas gracias
#3
Java / Re: Ayuda programa Java
21 Febrero 2013, 10:21 AM
Funciono!!!

Gracias por las respuestas llevaba 2 días con esto.
#4
Java / Ayuda programa Java
20 Febrero 2013, 13:13 PM
Hola buenas, tengo un problemilla con un programa de Java que como estoy aun aprendiendo no consigo sacarlo.

El problema es que tengo una base de datos en MySQL y quiero recoger informacion, agregar y quitar cosas de la base de datos desde Java, pero el problema viene cuando intento consultar los datos de la base de datos que tengo las siguientes columnas:

Codigo   Descripcion   Precio   Stock

y yo quiero que me busque una descripcion que le ponga yo y me devuelva el precio y el stock pero nose pq la parte donde pongo que lo busque en la tabla solo funciona con numeros no con caracteres, solo funciona si le pongo que me busque "codigo" y me devuelve el precio y stock y nose como solucionarlo para que pueda meterle yo la descripcion, tal como pongo en el la parte del programa.

Consultar = new JButton("Consultar");
       Consultar.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent arg0) {
           Resultado.setText("");
           tf2.setText("No existe dicho Articulo"); // Articulo
           tf3.setText("0");  // Precio
           tf4.setText("0"); // Stock
           try {
             Connection conexion=DriverManager.getConnection("jdbc:mysql://localhost/tienda","root" ,"");
             Statement comando=conexion.createStatement();
             ResultSet registro = comando.executeQuery("SELECT `Descripcion`, `Precio`, `Stock` FROM `articulos` WHERE `Descripcion`="+tf1.getText());
             if (registro.next()==true) {
                 tf2.setText(registro.getString("Descripcion"));
                 tf3.setText(registro.getString("Precio"));
                 tf4.setText(registro.getString("Stock"));
                 Resultado.setText("Articulo encontrado");
               } else {
                 Resultado.setText("No existe un artículo con dicha descripcion");
               }
             conexion.close();
           } catch(SQLException ex){
             setTitle(ex.toString());
           }
         }
       });


El codigo completo es el siguiente:



package Tienda;
   
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


   public class Tienda extends JFrame
   
   {

     private JPanel contenido;
     private JTextField tf1; // tf1 es texto a consultar
     private JTextField tf2; // tf2 es articulo consultado
     private JTextField tf3; // tf3 es precio consultado
     private JTextField tf4; // tf4 es stock consultado
     private JTextField tf5; // tf5 es el articulo a agregar
     private JTextField tf6; // tf6 es el precio a agregar
     private JTextField tf7; // tf7 es la cantidad a agregar
     private JTextField tf8; // tf8 es el articulo a eliminar
     private JTextField tf9; // tf10 es la cantidad a eliminar
     private JButton Consultar;
     private JButton Agregar;
     private JLabel ConsultarCodigo;
     private JLabel AgregarCodigo;
     private JLabel EliminarCodigo;
     private JLabel Resultado;
    

    
   
    
     public static void main(String[] args) {
       
       
       
   
       
       
       EventQueue.invokeLater(new Runnable() {
         public void run() {
           try {
             Tienda frame = new Tienda();
             frame.setSize(570, 450);
             frame.setLocationRelativeTo(null);
             frame.setVisible(true);
           } catch (Exception e) {
             e.printStackTrace();
           }
         }
       });
     }

   
     public Tienda() {
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       contenido = new JPanel();
       contenido.setBorder(new EmptyBorder(5, 5, 5, 5));
       setContentPane(contenido);
       contenido.setLayout(null);
      
      
      
      
       // tf1.setEditable(false);   para decir que el texto no se puede editar
      
       //
       // CONSULTAR
       //
      
      
       ConsultarCodigo = new JLabel("Ingrese el articulo a Consultar:");
       ConsultarCodigo.setBounds(60, 30, 243, 14);
       contenido.add(ConsultarCodigo);
      
       JLabel DescripcionDelArtculo = new JLabel("Consultar artículo:");
       DescripcionDelArtculo.setBounds(23, 65, 193, 14);
       contenido.add(DescripcionDelArtculo);
      
       tf1 = new JTextField();
       tf1.setBounds(140, 63, 120, 20);
       contenido.add(tf1);
       tf1.setColumns(10);
      
       // Articulo
      
       JLabel Articulo = new JLabel("Artículo:");
       Articulo.setBounds(293, 37, 95, 14);
       contenido.add(Articulo);
      
       tf2 = new JTextField();
       tf2.setBounds(380, 32, 150, 20);
       contenido.add(tf2);
       tf2.setColumns(10);
       tf2.setEditable(false);

      
       // Precio
      
       JLabel Precio = new JLabel("Precio:");
       Precio.setBounds(293, 77, 95, 14);
       contenido.add(Precio);
      
       tf3 = new JTextField();
       tf3.setBounds(380, 72, 150, 20);
       contenido.add(tf3);
       tf3.setColumns(10);
       tf3.setEditable(false);

      
       // Stock
      
       JLabel Stock = new JLabel("Stock:");
       Stock.setBounds(293, 117, 95, 14);
       contenido.add(Stock);
      
       tf4 = new JTextField();
       tf4.setBounds(380, 112, 150, 20);
       contenido.add(tf4);
       tf4.setColumns(10);
       tf4.setEditable(false);
      
      
       //
       // AGREGAR
       //
      
      
       AgregarCodigo = new JLabel("Agregar nuevo Artículo:");
       AgregarCodigo.setBounds(60, 170, 243, 14);
       contenido.add(AgregarCodigo);
      
       // Agregar Articulo
      
      
       JLabel ArticuloAdd = new JLabel("Artículo:");
       ArticuloAdd.setBounds(23, 210, 95, 14);
       contenido.add(ArticuloAdd);
      
       tf5 = new JTextField();
       tf5.setBounds(110, 210, 150, 20);
       contenido.add(tf5);
       tf5.setColumns(10);
      
       // Agregar Precio
      
      
       JLabel PrecioAdd = new JLabel("Precio:");
       PrecioAdd.setBounds(23, 250, 95, 14);
       contenido.add(PrecioAdd);
      
       tf6 = new JTextField();
       tf6.setBounds(110, 250, 150, 20);
       contenido.add(tf6);
       tf6.setColumns(10);
      
       // Agregar Stock
      
      
       JLabel CantidadAdd = new JLabel("Cantidad:");
       CantidadAdd.setBounds(23, 290, 95, 14);
       contenido.add(CantidadAdd);
      
       tf7 = new JTextField();
       tf7.setBounds(110, 290, 150, 20);
       contenido.add(tf7);
       tf7.setColumns(10);
      
       //
       // ELIMINAR
       //
      
       EliminarCodigo = new JLabel("Eliminar Artículo:");
       EliminarCodigo.setBounds(360, 170, 243, 14);
       contenido.add(EliminarCodigo);
      
      
       // Eliminar Articulo
      
      
       JLabel ArticuloDel = new JLabel("Artículo:");
       ArticuloDel.setBounds(293, 225, 95, 14);
       contenido.add(ArticuloDel);
      
       tf8 = new JTextField();
       tf8.setBounds(380, 225, 150, 20);
       contenido.add(tf8);
       tf8.setColumns(10);
      

       // Eliminar Cantidad
      
      
       JLabel CantidadDel = new JLabel("Cantidad:");
       CantidadDel.setBounds(293, 275, 95, 14);
       contenido.add(CantidadDel);
      
       tf9 = new JTextField();
       tf9.setBounds(380, 275, 150, 20);
       contenido.add(tf9);
       tf9.setColumns(10);
      
      
       Resultado = new JLabel("");
       Resultado.setBounds(150, 380, 400, 14);
       contenido.add(Resultado);
      

       cargarDriver();

      
       // Boton Consultar
      
       Consultar = new JButton("Consultar");
       Consultar.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent arg0) {
           Resultado.setText("");
           tf2.setText("No existe dicho Articulo");
           tf3.setText("0");
           tf4.setText("0");
           try {
             Connection conexion=DriverManager.getConnection("jdbc:mysql://localhost/tienda","root" ,"");
             Statement comando=conexion.createStatement();
             ResultSet registro = comando.executeQuery("SELECT `Descripcion`, `Precio`, `Stock` FROM `articulos` WHERE `Descripcion`="+tf1.getText());
             if (registro.next()==true) {
                 tf2.setText(registro.getString("Descripcion"));
                 tf3.setText(registro.getString("Precio"));
                 tf4.setText(registro.getString("Stock"));
                 Resultado.setText("Articulo encontrado");
               } else {
                 Resultado.setText("No existe un artículo con dicha descripcion");
               }
             conexion.close();
           } catch(SQLException ex){
             setTitle(ex.toString());
           }
         }
       });
       Consultar.setBounds(45, 100, 193, 30);
       contenido.add(Consultar);

    
      
      
       // Boton de Agregar
      
       Agregar = new JButton("Añadir articulo/s");
       Agregar.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent arg0) {
           Resultado.setText("");       
           try {
             Connection conexion=DriverManager.getConnection("jdbc:mysql://localhost/tienda","root" ,"");
             Statement comando=conexion.createStatement();
             comando.executeUpdate("insert into articulos(Descripcion,Precio,Stock) values ('"+tf5.getText()+"',"+tf6.getText()+","+tf7.getText()+")");
             conexion.close();
             Resultado.setText("Se ha/n añadido el/los articulo/s");
             tf5.setText("");
             tf6.setText("");
             tf7.setText("");
           } catch(SQLException ex){
             setTitle(ex.toString());
           }
         }
       });
       Agregar.setBounds(40, 330, 193, 30);
       contenido.add(Agregar);

      
       // Boton de Eliminar
      
      
       JButton Eliminar = new JButton("Eliminar articulo");
       Eliminar.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent arg0) {
           Resultado.setText("");
           try {
             Connection conexion=DriverManager.getConnection("jdbc:mysql://localhost/tienda","root" ,"");
             Statement comando=conexion.createStatement();
             int cantidad = comando.executeUpdate("delete from articulos where descripcion="+tf8.getText());
             if (cantidad==1) {
               tf8.setText("");
               tf9.setText("");       
               Resultado.setText("Se borro el artículo con dicha descripción");
             } else {
               Resultado.setText("No existe un artículo con dicha descripción");
             }
             conexion.close();
           } catch(SQLException ex){
             setTitle(ex.toString());
           }       
         }
       });
       Eliminar.setBounds(320, 330, 193, 30);
       contenido.add(Eliminar);
       cargarDriver();
     }
     private void cargarDriver() {
       try {
         Class.forName("com.mysql.jdbc.Driver");
       }catch(Exception ex) {
         setTitle(ex.toString());
       }
     }
   }

(recordar agregar mysql connector java si lo probais)

Gracias