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

[SOLUCIONADO] SQLServerException Netbeans

Estas en el tema de SQLServerException Netbeans en el foro de Java en Foros del Web. Hola que tal el problema que tengo y espero me puedan ayudar estoy desarrollando una aplicación de escritorio en Java, tengo información guardada en una ...
  #1 (permalink)  
Antiguo 07/11/2015, 00:12
 
Fecha de Ingreso: mayo-2012
Ubicación: df
Mensajes: 12
Antigüedad: 7 años, 8 meses
Puntos: 0
Exclamación SQLServerException Netbeans

Hola que tal el problema que tengo y espero me puedan ayudar estoy desarrollando una aplicación de escritorio en Java, tengo información guardada en una base de datos en un SQL Server 2008, en una tabla llamada Empleados tengo diversos campos tipos Int, varchar e image, hasta aquí todo normal, pero al momento de realizar una consulta y recuperar los valores de image, me indica el siguiente error com.microsoft.sqlserver.jdbc.SQLServerException: Se obtuvo acceso a los datos y estos no están disponibles para esta columna o parámetro., y no muestra la imagen, ya he intentado con otros códigos y es el mismo error, desconozco cual sea la causa también intente creando otro PreparedStatement pero aun así el error prevalece.

Código:
PreparedStatement pst3 = null;
        String Fn = Ficha.getText();
        Connection conn2 ;
        conn2 = javaconnect.ConnecrDb();
        String sqlf = "SELECT *  FROM Empleados WHERE Ficha = ?";
        if (Fn.isEmpty() == true) {
            JOptionPane.showMessageDialog(this, "No se puede consultar un valor que no ha sido ingresado verifique ficha.", "ERROR.", JOptionPane.ERROR_MESSAGE);
        } else {
            try {
                pst3 = conn2.prepareStatement(sqlf);
                pst3.setString(1, Fn);
                resultado = pst3.executeQuery();

                if (resultado.next()) {
 
                    Nombre.setText(resultado.getString("Nombre"));
                    Apellido_paterno.setText(resultado.getString("Apellido_paterno"));
                    Apellido_materno.setText(resultado.getString("Apellido_materno"));
                    Vigencia.setDate(resultado.getDate("Vigencia"));
                    Directo.setText(resultado.getString("Directo"));
                    Extension.setText(resultado.getString("Extension"));
                    Observaciones.setText(resultado.getString("Observaciones"));
                if (resultado.getBinaryStream("Firma") == null) {//si no encuentra la imagen
                JOptionPane.showMessageDialog(this, "No image");
            } else {
            //int len = resultado.getInt("Tamano");
            byte[] b = new byte[1024];//array de bytes
            InputStream in = resultado.getBinaryStream("Firma");
            int n = in.read(b);
            in.close();
            Image img = Toolkit.getDefaultToolkit().createImage(b);
            resultado.close();
            conn.close();
            Firma.setIcon((Icon) img);
                }
                } else {
             
                    JOptionPane.showMessageDialog(this, "La ficha no esta registrada, verifique o intente registrar.", "Error", JOptionPane.ERROR_MESSAGE);
                }
            
            } catch (SQLException | HeadlessException   | IOException ex) {
                System.out.println(ex);
                JOptionPane.showMessageDialog (this, ex);
        
        
        }
    
        }
Agradezco su apoyo.
  #2 (permalink)  
Antiguo 07/11/2015, 02:19
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 5 años, 5 meses
Puntos: 182
Respuesta: SQLServerException Netbeans

Buenas,

Código Java:
Ver original
  1. byte[] b = new byte[1024];//array de bytes
  2. InputStream in = resultado.getBinaryStream("Firma");
  3. int n = in.read(b);
  4. in.close();
  5. Image img = Toolkit.getDefaultToolkit().createImage(b);

Este codigo no tiene sentido alguno. Abres el stream, lees solo el primer byte, lo almacenas en un entero que no utilizas nunca y luego intentas construir la imagen con un array vacio.
Debes primero aprender a leer contenido binario:
http://www.aquaphoenix.com/lecture/java6/page4.html

Respecto al error de SQLServer, aparentemente es porque llamas dos veces al getBinaryStream (una en el if y otra para leer): https://msdn.microsoft.com/es-es/lib...=sql.110).aspx

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 07/11/2015, 13:47
 
Fecha de Ingreso: mayo-2012
Ubicación: df
Mensajes: 12
Antigüedad: 7 años, 8 meses
Puntos: 0
Respuesta: SQLServerException Netbeans

Gracias el problema radicaba en el if y la ejecución. referente a los bytes cambie el método y ya funciona.

Gracias.

Tema marcado como solucionado

Etiquetas: jdbc, netbeans, sql
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 12:23.