Skip to main content

Corregir problemas con DataProvider

En algunas ocasiones cuando diseñas aplicaciones web y no utilizas persistencia, mi preferido es JPA, pero si deseas usar RowSet en tus aplicaciones web y te encuentras con algunos errores, como ejemplo que el DataProvider aparece en el color rojo cuando hacemos el databinding, generalmente se debe algun problema con las tablas o la base de datos, en el siguiente ejemplo, demuestro como agregar dos tablas, y estando abierto en el diseñador web, desde el MySQL Browser o el MySQL Administrador (como prefieras), cambio el nombre a uno de los campos de la tabla, y esta ya habia sido arrastrada al formulario anteriormente con el nombre de campo sin modificar, generalmente, se mostrara el dataprovider en color rojo indicandonos algun problema, y no permitiendonos seleccionar ningun campo.
Puedes usar varias formas para solucionarlo, entre ellas, actualizar manualmente la sentencia sql con el nuevo nombre del campo, o cerrando el proyecto y abriendolo nuevamente.
Aqui vemos un ejemplo del DataProvider con errores


Aparecen los demas correctamente, menos el que cambios el nombre del campo en la base de datos luego de arrastrarlo al formulario

El campo que podemos ajustar manualmente, colocando el nombre que cambiamos llamado anteriormente regimenes y ahora regimen.


Este codigo lo encontramos en el metodo _init(), que es donde se inicializan el dataprovider.

Ahora en el diseñador seleccionamos el rowset y damos click derecho y escojemos la opcion Edit SQL Statement


En el diseñador SQL damos click derecho y seleccionamos agregar tabla (Add Table), para establecer la union de las varias tablas



seleccionamos de la lista la tabla con la que deseamos trabajar, estas deben tener un campo en comun

Nos aparece la tabla y la relación existente entre las tablas


Simplemente le quitamos la marca a la casilla de selección a los campos que no deseamos


Luego en el diseñador damos click derecho en la tabla y seleccionamos Bind To Data, para enlazar a una tabla de la base de datos

Luego de corregir el nombre del campo, este muestra el dataprovider correctamente, sin el color rojo

ahora podemos seleccionar los campos de la tabla, en base a la relación que se establecio en los pasos anteriores.

Comments

marlon said…
HOLA ....FELICIDADES POR TU BLOG ..TIENES INFORMACION MUY UTIL...

pero me gustaria que me ayudes para cargar una imagen de la base de datos a una pagina en este caso estoy trabajando con icefaces pero es lo mismo ...y utilizo netbeans 6.5 y mysql 5.x ....mira ya probe con un graphicImage y a este le arrastro (visualmente) la tabla donde tengo la imagen que quiero cargar ....... como es visual se me carga por defecto la primera imagen en el graphicImage pero...... QUIERO CAMBIAR LA IMAGEN Y ESO ES LO QUE NO PUEDO ... por ejemplo quiero que tras una accion de un commandButton se cambie la imagen ...y esto implicaria cambiar la sentencia sql es decir: rowSet.setCommand("SELECT ........... FROM image where id_image=1"); al 1 quiero ponerlo en una variable pero no me lo permite ....o existe otra forma ......AYUDAME PORFAVOR ... ES DE URGENCIA

DE ANTEMANO DE AGRADEZCO

ESPERO TU RESPUESTA

GRACIAS..!!

Popular posts from this blog

FileUpload con Primefaces

FileUpload con Primefaces

Si queremos subir imagenes a nuestra aplicación usaremos el componente FileUpload Debemos realizar los siguientes pasos:
Agregar al archivo web.xml

   <filter>        <filter-name>PrimeFaces FileUpload Filter</filter-name>        <filter-class>            org.primefaces.webapp.filter.FileUploadFilter        </filter-class>    </filter>    <filter-mapping>        <filter-name>PrimeFaces FileUpload Filter</filter-name>        <servlet-name>Faces Servlet</servlet-name>    </filter-mapping>



Crear dentro de resources el directorio donde deseamos almacenar las imagenes En este ejemplo: resources/fotos/clinicas y agregue una imagen llamada fotos.png que se usará como imagen inicial.



En JSFUtil u otro @Named Beans que usemos agregamos tres métodos uno para obtener el path de la aplicación web , otro para obtener el path relativo a /fotos/clinicas y el otro para copiar los archivos. /*

Apache NetBeans

Apache NetBeans
https://wiki.apache.org/incubator/NetBeansProposal

Si, algo que se esperaba desde hace muchos años, una liberación de NetBeans, para convertirlo en un IDE más abierto, y que permita mayor contribución de la comunidad y de otras empresas, ya inicio su primera etapa en la incubadora de la Fundación Apache.
Las implicaciones que esto conlleva son múltiples por una parte esta la evolución de NetBeans, al permitir que más contribuyentes puedan aportar a sus mejoras, también garantiza que aquellas instituciones no sientan que es una sola organización la que controla la evolución. A las comunidades les permite sentirse que participan de un proyecto con todas las garantías que ofrece la Fundación Apache.

Muchos pensaran que Oracle esta dejando morir el proyecto, la realidad es diferente, hay muchos ingenieros que están participando del proyecto en la fundación Apache.
Es una noticia excelente para los desarrolladores, instituciones, empresas que utilizan NetBeans , se estima qu…

Un ejemplo sencillo de Refactorización y Genericos

Un ejemplo sencillo de Refactorización y Genericos

public class Refactorizador<K, V> {

    public V copyFromBeans(K k, V v) {
        try {
            Class claseK = k.getClass();
            Class claseV = v.getClass();

            Method[] metodosK = claseK.getMethods();

            for (Method method : metodosK) {
                if (isGetter(method)) {
                    Method metodoGetK = claseK.getDeclaredMethod(method.getName());
                    Method metodoSetV = claseV.getDeclaredMethod(changeGetBySet(method.getName()), method.getReturnType());
                    metodoSetV.invoke(v, metodoGetK.invoke(k));
                }

            }

        } catch (Exception e) {
            System.out.println("refactorizador() " + e.getLocalizedMessage());
        }
        return v;
    }

     public  boolean isGetter(Method method) {

        if (!method.getName().startsWith("get")) {
            return false;
        }
        if (method.getName().startsWith("getCla…