Foros del Web » Programación para mayores de 30 ;) » Java »

Consultas varias a BD Mysql

Estas en el tema de Consultas varias a BD Mysql en el foro de Java en Foros del Web. Hola, para un proyecto en la universidad debo hacer un programa en java con BD Mysql de ventas y despacho, y hace mas de una ...
  #1 (permalink)  
Antiguo 17/06/2013, 00:18
 
Fecha de Ingreso: febrero-2007
Mensajes: 26
Antigüedad: 17 años, 2 meses
Puntos: 0
Consultas varias a BD Mysql

Hola, para un proyecto en la universidad debo hacer un programa en java con BD Mysql de ventas y despacho, y hace mas de una semana que estoy pegado y no he podido avanzar. Les cuento.

tengo una tabla "productos" y otra "merma" y cuando en el formulario de mantenedor de productos se selecciona merma debo modificar el campo stock de la tabla productos y ademas insertar el campo codigo y stock de la tabla productos en la tabla merma. la tabla productos de modifica sin problemas pero no he logrado insertar en merma el codigo y el stock.

Código PHP:
 if (rdMerma.isSelected()){
         
sSQL "UPDATE producto "
                     
"SET FacturaProv = ?,"
                     
"codigo = ?,"
                     
"descripcion = ?,"
                     
"modelo = ?,"
                     
"marca = ?,"
                     
"familia = ?,"
                     
"stock = ?,"
                     
"precio = ? "
                     
"WHERE codigo ="+codigoprod;
             
                        
         try 
        {
            
PreparedStatement pst cn.prepareStatement(sSQL);
            
            
pst.setString(1factProveedor);
            
pst.setString(2codigoprod);
            
pst.setString(3descripcion);
            
pst.setString(4modelo);
            
pst.setString(5marca);
            
pst.setString(6familia);
            
pst.setInt(7ResulStock);
            
pst.setString(8precio);
            
         
int n pst.executeUpdate();
         
            if (
0)
            {
               
JOptionPane.showMessageDialog(nullmensaje);
            }           
        } 
        catch (
SQLException ex
        {
            
JOptionPane.showMessageDialog(nullex);    
             
        }   
         
        
sSQL1 "SELECT codigo FROM producto "
                
"WHERE codigo = "+codigoprod;
         
        
        
        try 
        {
            
Statement st cn.createStatement();
            
ResultSet rs st.executeQuery(sSQL1);
              if (!
rs.next()){
                
sSQL2 "UPDATE merma "
                     
"SET codigo = ?,"
                     
"cantmerma = ?,"
                     
"WHERE codigo ="+codigoprod;  
              
                 
PreparedStatement pst cn.prepareStatement(sSQL2);
                 
pst.setString(1codigoprod);
                 
pst.setInt(2ResulStock);
                 
              }
              else{
                 
sSQL3 "INSERT INTO merma(codigo, cantmerma)"
                      
"VALUES(?,?)"
                 
PreparedStatement pst cn.prepareStatement(sSQL3);
                 
pst.setString(1codigoprod);
                 
pst.setInt(2ResulStock);
              } 
           
        } 
        catch (
SQLException ex
        {
           
JOptionPane.showMessageDialog(nullex);
        } 
la idea es modificar la tabla productos (esto lo hace), luego hago un select a la tabla merma y si el codigo ya existe deberia modificar el campo "cantmerma" y sino, deberia ingresar los campos codigo y cantmerma en la tabla merma.
estoy ocupando el Netbeans 7.3, muchas gracias.
PD: no me arroja ningun error, simplemente no inserta o modifica la tabla merma... no tengo experiencia en Java por lo que se me ha hecho demasiado dificil detectar cual es el problema.

Última edición por reverdexxx; 17/06/2013 a las 07:50
  #2 (permalink)  
Antiguo 17/06/2013, 13:39
 
Fecha de Ingreso: julio-2012
Mensajes: 4
Antigüedad: 11 años, 9 meses
Puntos: 0
Sonrisa Respuesta: Consultas varias a BD Mysql

tampoco es que tenga mucha experiencia en java pero creo que para update y insert es .executeUpdate no executeQuery
  #3 (permalink)  
Antiguo 17/06/2013, 14:30
 
Fecha de Ingreso: febrero-2007
Mensajes: 26
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Consultas varias a BD Mysql

en todo caso, no tengo el executeUpdate para el update y el insert, voy a probar y comento, gracias
  #4 (permalink)  
Antiguo 17/06/2013, 21:34
 
Fecha de Ingreso: febrero-2007
Mensajes: 26
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Consultas varias a BD Mysql

puse el executeUpdate para el update y el insert, y ahora si el codigo no exixte en la tabla merma el insert lo hace sin problemas, pero si el codigo ya existe me tira error de campo duplicado... y eso es justo lo que no quiero, lo que necesito es si el codigo ya se encuentra ingresado deberia hacer el update... alguien tiene una idea, no se por donde va el error.
  #5 (permalink)  
Antiguo 18/06/2013, 01:14
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Consultas varias a BD Mysql

Antes de hacer el insert, haz una select para ver si existe.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #6 (permalink)  
Antiguo 18/06/2013, 19:58
 
Fecha de Ingreso: febrero-2007
Mensajes: 26
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Consultas varias a BD Mysql

Cita:
Iniciado por Xerelo Ver Mensaje
Antes de hacer el insert, haz una select para ver si existe.
Gracias Xerelo, pero el select ya se encuentra antes de insertar, pero sigo con el problema si el codigo no se encuentra en la tabla merma lo ingreso sin problemas, pero cuando ya existe deberia modificar el campo cantmerma de la tabla merma y me arroja el error "com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityCon straintViolationException: Duplicate entry '1216' for key 1", es obvio que el error es por que no acepta duplicados se que algo estoy haciendo mal pero no lo logro ver, adjunto el codigo nuevamente, gracias

Código PHP:
if (rdMerma.isSelected()){
         
sSQL "UPDATE producto "
                     
"SET FacturaProv = ?,"
                     
"codigo = ?,"
                     
"descripcion = ?,"
                     
"modelo = ?,"
                     
"marca = ?,"
                     
"familia = ?,"
                     
"stock = ?,"
                     
"precio = ? "
                     
"WHERE codigo ="+codigoprod;
             
                        
         try 
        {
            
PreparedStatement pst cn.prepareStatement(sSQL);
            
            
pst.setString(1factProveedor);
            
pst.setString(2codigoprod);
            
pst.setString(3descripcion);
            
pst.setString(4modelo);
            
pst.setString(5marca);
            
pst.setString(6familia);
            
pst.setInt(7ResulStock);
            
pst.setString(8precio);
            
         
int n pst.executeUpdate();
         
            if (
0)
            {
               
JOptionPane.showMessageDialog(nullmensaje);
            }           
        } 
        catch (
SQLException ex
        {
            
JOptionPane.showMessageDialog(nullex);    
             
        }   
         
        
sSQL1 "SELECT codigo FROM merma "
                
"WHERE codigo = "+codigoprod;
         
        
        
        try 
        {
           
            
Statement st cn.createStatement();
            
ResultSet rs st.executeQuery(sSQL1);
              if (!
rs.next ()){
                
sSQL2 "UPDATE merma "
                     
"SET cantmerma = ?,"
                     
"WHERE codigo ="+codigoprod;  
                 
                
PreparedStatement pst cn.prepareStatement(sSQL2);
                
pst.setInt(1ResulStock);
                
pst.executeUpdate();  
                                             
              }
              else{
                 
sSQL3 "INSERT INTO merma(codigo, cantmerma)"
                 
"VALUES(?,?)";
                 
                 
PreparedStatement pst cn.prepareStatement(sSQL3);
                 
pst.setString(1codigoprod);
                 
pst.setInt(2ResulStock);
                 
pst.executeUpdate(); 
                  
                 
              } 
           
        } 
        catch (
SQLException ex
        {
           
JOptionPane.showMessageDialog(nullex);
        }  
         
        
    }                                          
    } 
  #7 (permalink)  
Antiguo 19/06/2013, 02:47
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Consultas varias a BD Mysql

Aparentemente el código está bien.

¿1216 es el codigo, un incremental o el catmerma? Es que lo único que se me ocurre es que la primary key no sea el codigo.

http://es.kioskea.net/faq/2213-dupli...-127-for-key-1
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #8 (permalink)  
Antiguo 21/06/2013, 14:26
Avatar de fahs82  
Fecha de Ingreso: abril-2012
Ubicación: guadalajara
Mensajes: 139
Antigüedad: 12 años
Puntos: 12
Respuesta: Consultas varias a BD Mysql

yo te sugiero declarar diferentes PreparedStatement según sea la condición que se cumpla , es decir declarar un preparedstatement pstInserta() para insertar , un pstActualizar() con sus respectivos querys de update y sus valores , creo que puede haber hay algún método que queda en memoria del estatement que posiblemente te este provocando algún tipo de bug , otra cosa que haría seria separar métodos para simplificar tu código

if(condición 1){

inserta();
}

else {
actualiza();
}
  #9 (permalink)  
Antiguo 25/06/2013, 19:51
 
Fecha de Ingreso: febrero-2007
Mensajes: 26
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Consultas varias a BD Mysql

Estimados, no había podido responder, finalmente no pude solucionar el problema pero, me estaba enredando solo porque el campo codigo de la tabla merma no tenia para que ser clave primaria, ya que se debía guardar todas las veces que se ingresa en la tabla productos y lo importante era almacenar un campo "observación" donde se describe el motivo de porque este codigo se descuenta de productos... Muchas gracias por todo, pueden finalizar el post

Etiquetas: bd, mysql, netbeans, programa, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:46.