![]() |
| |||
| Hola, Tengo que pasar un dato tipo int y tipo double a un procedimiento almacenado en una base de datos. La forma de hacerlo es la siguiente. Integer intCodigo = null; Double dblCantidad = null; if (request.getParameter("id").trim() != "") { intCodigo = new Integer(request.getParameter("id").trim() ); } if (request.getParameter("cantidad").trim() != "") { dblCantidad = new Double(request.getParameter("cantidad").trim() ); } CallableStatement cs = conn.prepareCall("{ call proInserta(?,?,?) }"); cs.setInt ( 1, intCodigo ); cs.setDouble ( 2, dblCantidad ); cs.execute(); cs.close(); Mi problema es que en algunos casos tengo que pasar al procedimiento valores null para estas variables int y double. Como estas variables a ser tipo primitivos no admiten valores null he puesto varible tipo Integer y Double que si admiten valores null. Lo que pasa que estas variables tipo Integer y Double no se pueden poner como parámetro a setInt ni a setDouble, por lo que tendría que convertirlos a int y a double, pero estos tipos (int y double) no admiten valores nulos y yo necesito pasar al procedimiento valores nulos. Hay alguna solución a esto? Gracias de antemano. |
| | ||||
| ||||
| |
| |||
| > Hay alguna solución a esto? Sí, primero, no usar el prepareCall, sino construirte la llamada dinámicamente con StringBuffer, después: StringBuffer buf = new StringBuffer("call proInserta("); if (valor != null) { buf.append(valor); } bla, bla, bla,..... Es decir, sólo pones el valor si no es null. Otra cosita.... Tu aplicación, o lo que sea que estés haciendo no está nada pensada. No puedes ir mezclando la parte de presentación (request y demás), con el acceso a BBDD de una manera tan alegre. Bueno, por poder sí que puedes, pero no te lo recomiendo. ¿Sabes lo que es una clase?, ¿por qué no separas un poco esa lógica, y te haces al menos una clase de acceso a BBDD a la que le pases los valores que has recuperado de pantalla?. Esta no sería la solución definitiva, pero sería un comienzo. Bueno, es sólo un consejo. |
| |||
| > Hay alguna solución a esto? Sí, primero, no usar el prepareCall, sino construirte la llamada dinámicamente con StringBuffer, después: StringBuffer buf = new StringBuffer("call proInserta("); if (valor != null) { buf.append(valor); } bla, bla, bla,..... Es decir, sólo pones el valor si no es null. Otra cosita.... Tu aplicación, o lo que sea que estés haciendo no está nada pensada. No puedes ir mezclando la parte de presentación (request y demás), con el acceso a BBDD de una manera tan alegre. Bueno, por poder sí que puedes, pero no te lo recomiendo. ¿Sabes lo que es una clase?, ¿por qué no separas un poco esa lógica, y te haces al menos una clase de acceso a BBDD a la que le pases los valores que has recuperado de pantalla?. Esta no sería la solución definitiva, pero sería un comienzo. Bueno, es sólo un consejo. |
| |||
| > Hay alguna solución a esto? Sí, primero, no usar el prepareCall, sino construirte la llamada dinámicamente con StringBuffer, después: StringBuffer buf = new StringBuffer("call proInserta("); if (valor != null) { buf.append(valor); } bla, bla, bla,..... Es decir, sólo pones el valor si no es null. Otra cosita.... Tu aplicación, o lo que sea que estés haciendo no está nada pensada. No puedes ir mezclando la parte de presentación (request y demás), con el acceso a BBDD de una manera tan alegre. Bueno, por poder sí que puedes, pero no te lo recomiendo. ¿Sabes lo que es una clase?, ¿por qué no separas un poco esa lógica, y te haces al menos una clase de acceso a BBDD a la que le pases los valores que has recuperado de pantalla?. Esta no sería la solución definitiva, pero sería un comienzo. Bueno, es sólo un consejo. |
| |||
| > Hay alguna solución a esto? Sí, primero, no usar el prepareCall, sino construirte la llamada dinámicamente con StringBuffer, después: StringBuffer buf = new StringBuffer("call proInserta("); if (valor != null) { buf.append(valor); } bla, bla, bla,..... Es decir, sólo pones el valor si no es null. Otra cosita.... Tu aplicación, o lo que sea que estés haciendo no está nada pensada. No puedes ir mezclando la parte de presentación (request y demás), con el acceso a BBDD de una manera tan alegre. Bueno, por poder sí que puedes, pero no te lo recomiendo. ¿Sabes lo que es una clase?, ¿por qué no separas un poco esa lógica, y te haces al menos una clase de acceso a BBDD a la que le pases los valores que has recuperado de pantalla?. Esta no sería la solución definitiva, pero sería un comienzo. Bueno, es sólo un consejo. |
| |||
| > Hay alguna solución a esto? Sí, primero, no usar el prepareCall, sino construirte la llamada dinámicamente con StringBuffer, después: StringBuffer buf = new StringBuffer("call proInserta("); if (valor != null) { buf.append(valor); } bla, bla, bla,..... Es decir, sólo pones el valor si no es null. Otra cosita.... Tu aplicación, o lo que sea que estés haciendo no está nada pensada. No puedes ir mezclando la parte de presentación (request y demás), con el acceso a BBDD de una manera tan alegre. Bueno, por poder sí que puedes, pero no te lo recomiendo. ¿Sabes lo que es una clase?, ¿por qué no separas un poco esa lógica, y te haces al menos una clase de acceso a BBDD a la que le pases los valores que has recuperado de pantalla?. Esta no sería la solución definitiva, pero sería un comienzo. Bueno, es sólo un consejo. |
| |||
| > Hay alguna solución a esto? Sí, primero, no usar el prepareCall, sino construirte la llamada dinámicamente con StringBuffer, después: StringBuffer buf = new StringBuffer("call proInserta("); if (valor != null) { buf.append(valor); } bla, bla, bla,..... Es decir, sólo pones el valor si no es null. Otra cosita.... Tu aplicación, o lo que sea que estés haciendo no está nada pensada. No puedes ir mezclando la parte de presentación (request y demás), con el acceso a BBDD de una manera tan alegre. Bueno, por poder sí que puedes, pero no te lo recomiendo. ¿Sabes lo que es una clase?, ¿por qué no separas un poco esa lógica, y te haces al menos una clase de acceso a BBDD a la que le pases los valores que has recuperado de pantalla?. Esta no sería la solución definitiva, pero sería un comienzo. Bueno, es sólo un consejo. |
| |||
| > Hay alguna solución a esto? Sí, primero, no usar el prepareCall, sino construirte la llamada dinámicamente con StringBuffer, después: StringBuffer buf = new StringBuffer("call proInserta("); if (valor != null) { buf.append(valor); } bla, bla, bla,..... Es decir, sólo pones el valor si no es null. Otra cosita.... Tu aplicación, o lo que sea que estés haciendo no está nada pensada. No puedes ir mezclando la parte de presentación (request y demás), con el acceso a BBDD de una manera tan alegre. Bueno, por poder sí que puedes, pero no te lo recomiendo. ¿Sabes lo que es una clase?, ¿por qué no separas un poco esa lógica, y te haces al menos una clase de acceso a BBDD a la que le pases los valores que has recuperado de pantalla?. Esta no sería la solución definitiva, pero sería un comienzo. Bueno, es sólo un consejo. |
| |||
| Hola, lo que hago es recuperar en un servlet todas los parámetros que ha introducido el usuarios en la pagina jsp. Luego después de una serie de comprobaciones paso estos parámetros a otro servlet que se encarga de conectar con la base de datos y llamar al procedimiento almacenado en base de datos. Este procedimiento almacenada se encarga de realizar una serie de acciones sobre tablas oracle. Una vez hecho esto devuelve el control a una pagina jsp mostrando el resultado. Ves este planteamiento mal hecho. Un saludo. |
| |||
| Hola, lo que hago es recuperar en un servlet todas los parámetros que ha introducido el usuarios en la pagina jsp. Luego después de una serie de comprobaciones paso estos parámetros a otro servlet que se encarga de conectar con la base de datos y llamar al procedimiento almacenado en base de datos. Este procedimiento almacenada se encarga de realizar una serie de acciones sobre tablas oracle. Una vez hecho esto devuelve el control a una pagina jsp mostrando el resultado. Ves este planteamiento mal hecho. Un saludo. |
| |
| |
![]() |
| Herramientas | |
| Desplegado | |
| |
Temas Similares | ||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| nulos | Hola | Newsgroup microsoft.public.es.dotnet.vb | 5 | 02-06-2008 15:12:57 |
| Como asignar nulos a una tabla con un entero que permite nulos. | Paul | Newsgroup microsoft.public.es.csharp | 2 | 14-04-2008 15:31:21 |
| valores nulos en consulta | loquillo | Newsgroup es.comp.bd.ms-access | 16 | 12-10-2007 17:47:36 |
| Valores nulos en tableadapter | Pablo | Newsgroup microsoft.public.es.dotnet.ado | 12 | 26-09-2006 15:54:02 |
| valores nulos | victor | Newsgroup microsoft.public.es.ado | 0 | 29-01-2004 16:49:52 |