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

[SOLUCIONADO] Consulta, insertar en tabla MySQL

Estas en el tema de Consulta, insertar en tabla MySQL en el foro de Java en Foros del Web. Hola, buenas tardes. Tengo una consulta sobre un metodo que hice para insertar en una tabla. La misma esta compuesta por datos de texto y ...
  #1 (permalink)  
Antiguo 24/10/2014, 14:04
 
Fecha de Ingreso: octubre-2014
Mensajes: 39
Antigüedad: 9 años, 6 meses
Puntos: 0
Pregunta Consulta, insertar en tabla MySQL

Hola, buenas tardes.

Tengo una consulta sobre un metodo que hice para insertar en una tabla.
La misma esta compuesta por datos de texto y una imagen. El problema lo tengo a la hora de insertar la imagen.

este es el error que me da:

Error You have an error in you SQL syntax, check the manual that conrresponds to your MySQL server version fon right syntax to use near '* FROM OPENROWSET (BULK N'C:\Users\\mennani\Pictures\disposicion de papel\2013120.jpg' at line 1


No se como solucionarlo.


Este es el codigo:

Código:
public void nuevoArticulo(String nombre, String descripcion, int stockMinimo, int stockActual,
            Float precio, String ubicacion, Blob imagen, int categoria) {
        
        //METODO PARA GUARDAR UN NUEVO ARTICULO
        
        Connection miConexion = (Connection) ConexionDB.GetConnection();
        String idString;
        try {
            Statement statement = (Statement) miConexion.createStatement();
            Statement statement2 = (Statement) miConexion.createStatement();
            Statement statement3 = (Statement) miConexion.createStatement();            
            
            setNombre(nombre);
            setDescripcion(descripcion);
            setStockMinimo(stockMinimo);
            setStockActual(stockActual);
            setCategoria(categoria);
            setPrecio(precio);
            setImagen(imagen);
            setUbicacion(ubicacion);
            
            ResultSet existe = statement3.executeQuery("select nombre from productos where nombre = '"+jTextField2.getText()+"'");
            if (existe.next()==false){
                //DETERMINO SI ES EL PRIMER REGISTRO O NO
                ResultSet maximo = statement2.executeQuery("select id from productos order by id desc");
                if (maximo.next()==true){ 
                    String idMaximo = maximo.getString("id");
                    int id = Integer.parseInt(idMaximo);
                    id = id + 1; //Si hay articulos cargados me paro en el ultimo ID y le sumo 1
                    idString = Integer.toString(id);
                }else {
                    //SI NO ES EL PRIMERO
                    idString = "1"; //Si la tabla esta vacia el primer ID es 1
                }
                String fot = futuraFoto.getText();
                statement.execute("insert into productos values('" + idString + "','" + nombre + "',"
                        + "'" + descripcion + "','" + stockMinimo + "','" + stockActual + "'"
                        + ",'" + ubicacion + "','" + precio + "','" + categoria + "',"
                        + " * FROM OPENROWSET (BULK N'"+fot+"', medium_blob))");
                //fomratoColumnas();

                JOptionPane.showMessageDialog(jTable1, "Datos ingresados correctamente");
                statement.close();
                statement2.close();
                statement3.close();
                existe.close();
                miConexion.close();
                
            }else {                
                JOptionPane.showMessageDialog(null, "Existe un articulo con ese nombre");                
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(jTable1, "Error " + ex.getMessage());
        } 
    }


Muchas gracias.

Saludos.
  #2 (permalink)  
Antiguo 24/10/2014, 14:31
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Consulta, insertar en tabla MySQL

Cita:
+ " * FROM OPENROWSET (BULK N'"+fot+"', medium_blob))");
Que se supone que pretendes hacer con eso? Eso no es SQL estandard y nunca he visto nada parecido en MySQL...


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 27/10/2014, 08:44
 
Fecha de Ingreso: octubre-2014
Mensajes: 39
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Consulta, insertar en tabla MySQL

Hola Profesor, esa sentencia la saque de este video, a partir del minuto 1:
https://www.youtube.com/watch?v=hyx6SxTcRT8

Donde explica como guardar una imagen en un base de datos.

Si existe otra forma que conozcas sera aceptada, yo intente utilizar esa porque es la unica que encontré en internet hasta el momento.


Muchas gracias.
Saludos.
  #4 (permalink)  
Antiguo 27/10/2014, 08:59
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Consulta, insertar en tabla MySQL

Buenas,

Ese video es para insertar una imagen en Microsoft SQL Server, no en MySQL.

Intentalo mejor con este ejemplo donde se inserta a partir de un File:
http://www.java2s.com/Code/Java/Data...uretoMySQL.htm

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #5 (permalink)  
Antiguo 27/10/2014, 09:21
 
Fecha de Ingreso: octubre-2014
Mensajes: 39
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Consulta, insertar en tabla MySQL

Muchas gracias por el tutorial que me pasaste.
Una consulta, en la base de datos MySQL el campo de la imagen lo sigo manteniendo como Blob? o es otro tipo?

Saludo.
  #6 (permalink)  
Antiguo 27/10/2014, 09:54
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Consulta, insertar en tabla MySQL

Buenas,

Si, es correcto, los binarios se debe almacenar como Blob en la base de datos.

Como curiosidad, comentar que existe bastante discusion hoy en dia sobre si es mejor guardar las imagenes fisicamente en la base de datos o guardarlas en el filesystem del servidor y almacenar en la base de datos unicamente la ruta o URL a la imagen.

http://stackoverflow.com/questions/3...-db-yea-or-nay

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #7 (permalink)  
Antiguo 27/10/2014, 13:55
 
Fecha de Ingreso: octubre-2014
Mensajes: 39
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Consulta, insertar en tabla MySQL

Muy buena sugerencia profesor, me ha dado mas velocidad a la hora de cargar los datos en un formulario al tener guardado el path y no la imagen.

Muchas gracias.

Etiquetas: jtable, mysql, string, tabla
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 22:31.