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

introducir valores null en la base de datos desde java

Estas en el tema de introducir valores null en la base de datos desde java en el foro de Java en Foros del Web. Hola: Tengo un problema que todavia no le he encontrado una buena solucion, resulta que yo tengo unos formularios en los que recojo los valores ...
  #1 (permalink)  
Antiguo 27/04/2009, 09:17
 
Fecha de Ingreso: septiembre-2008
Mensajes: 30
Antigüedad: 15 años, 7 meses
Puntos: 0
introducir valores null en la base de datos desde java

Hola:

Tengo un problema que todavia no le he encontrado una buena solucion,
resulta que yo tengo unos formularios en los que recojo los valores que se introducen en un JTextField

String lugar = (String) jTextLugar.getText();

y le paso esa variable a las funciones que lo menten en la base de datos
el problema es que cuando no se escribe nada en el text box me inserta " en la base de datos:

la consulta que hago es

"Update tabla set nombre= ' "
+ lugar+ " '.......

como es la mejor formade arreglar esto
hay que coprobar todos los campos si son null?
no hay otra solucion, ya que son un monton de campos y un monton de cosultas

(uso postgres ..)

muchas gracias
  #2 (permalink)  
Antiguo 27/04/2009, 21:53
Avatar de sanchezg  
Fecha de Ingreso: abril-2009
Mensajes: 76
Antigüedad: 15 años
Puntos: 0
Respuesta: introducir valores null en la base de datos desde java

hola no te entendi muy bien pero porque no pones desd JTextField que tenga valor inicial null espero te sirva saludos
  #3 (permalink)  
Antiguo 28/04/2009, 01:47
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 3 meses
Puntos: 10
Respuesta: introducir valores null en la base de datos desde java

Wenas

sanchezg eso no serviria, porque insertaria la cadena 'null' en la bbdd.

Por otro lado, lo que puedes hacer es al obtener el dato del campo de texto, comprobar si esta vacio. Si no esta vacio haces el update y si no no hagas nada.

Otra opcion ya que son muchos campos te puedes crear una especie de funcion convertirVaciosNull que sea algo parecido a esto.

Código:
   public String convertirVaciosNull (String dato)
   {
      String resultado = null;
      if (dato != null && dato.length()>0)
      {
         resultado = dato;
      }
      return resultado;
   }
Y lla marlo cuando te interesa. Tampoco es tan dificil.

Saludos.
  #4 (permalink)  
Antiguo 28/04/2009, 02:27
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: introducir valores null en la base de datos desde java

Si utilizas un PreparedStatement, es más fácil poner un campo a null usando los metodos setXX(). Crear sentencias SQL concatenando cadenas no sólo es inseguro sino que además da estos "problemillas".

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #5 (permalink)  
Antiguo 04/05/2009, 04:15
 
Fecha de Ingreso: septiembre-2008
Mensajes: 30
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: introducir valores null en la base de datos desde java

muchas gracias por las ideas..

finalmente lo que hice es:
consultasql= consultasql.replaceAll("''", "null");

tras crear la consulta y
justo antes de llamar al executeQuery o executeUpdate
(para todas las consultas en las que se daba la posibilidad de que ocurriera)

me parecio lo mas sencillo y de momento funciona correctamente

muchas gracias de nuevo :)
  #6 (permalink)  
Antiguo 04/05/2009, 08:46
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: introducir valores null en la base de datos desde java

Sólo esperemos que nunca tengas un valor de texto o el nombre de una tabla, columna o condición que contenga la cadena 'null'. Así que, por ejemplo, olvídate de hacer comparaciones con "is not null" .

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #7 (permalink)  
Antiguo 04/05/2009, 08:57
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 3 meses
Puntos: 10
Respuesta: introducir valores null en la base de datos desde java

Cita:
Iniciado por marvi Ver Mensaje
muchas gracias por las ideas..

finalmente lo que hice es:
consultasql= consultasql.replaceAll("''", "null");

tras crear la consulta y
justo antes de llamar al executeQuery o executeUpdate
(para todas las consultas en las que se daba la posibilidad de que ocurriera)

me parecio lo mas sencillo y de momento funciona correctamente

muchas gracias de nuevo :)

Estas insertando la cadena null que no tiene nada que ver con el valor null.

Saludos.
  #8 (permalink)  
Antiguo 04/05/2009, 10:56
 
Fecha de Ingreso: septiembre-2008
Mensajes: 30
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: introducir valores null en la base de datos desde java

entonces creo que tengo un error de concepto muy grande de como crear mis consultas en java...no directamente sobre la base de datos

yo cuando construyo una consulta lo hago asi por ejemplo:
Código:
String nombre= "nombre1";
String consultasql =  "Update tabla set  nombre= '"+ nombre+ "' where id=14 "

		consultasql= consultasql.replaceAll("''", "null");
		
              ModificarDatos(consultasql);
             //en esta funcion se llama a stmt.executeUpdate(consultasql);

cuando el valor de nombre tiene caracteres la consulta quedaria:

Update tabla set nombre= 'nombre1' where id=14

para otro ejemplo en el que no tuviera:
antes de remplazar las comillas simples que uqedan seguidas:
Update tabla set nombre= '' where id=14
//me da problmeas por uqe pone '' en la base de datos

si las remplazas:
Update tabla set nombre= null where id=14

// no mete el string ya uqe no muestra la cadena de caracteres "null" en la base de datos, que seria lo que pasaria si estubiese metiendo la cadena null no?
el valor modificado aparece vacio (por lo que supongo que es correcto que es null no?)

creo que es una consulta bien construida, sino por favor explicarme como debo hacerlo

eso si he encontrado un fallo,
esto solo valdria para las consultas de Insert y Update ,

para los select habria que hacer:
Código:
consultasql= consultasql.replaceAll("= ''", " is null ");
en ese caso por ejemplo quedaria
antes:
Select * from tabla where nombre= ''
despues:
select * from tabla where nombre is null

de momento no encontre fallos a esto pero por favor si despues de esta explicacion seguis viendolo mal explicarme el que exactamente,
ya qeu creo que no se esta metiendo la cadena null sino el valor null
(sino como lo compruebo)
muchisimas gracias vuestro tiempo e interes
  #9 (permalink)  
Antiguo 04/05/2009, 15:58
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: introducir valores null en la base de datos desde java

Me cito :
Cita:
Iniciado por GreenEyed Ver Mensaje
Si utilizas un PreparedStatement, es más fácil poner un campo a null usando los metodos setXX()...
En el tutorial de Java, por ejemplo: http://csusap.csu.edu.au/java-tut/jd.../prepared.html

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #10 (permalink)  
Antiguo 05/05/2009, 04:39
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 3 meses
Puntos: 10
Respuesta: introducir valores null en la base de datos desde java

marvi, lo tuyo son ganas de complicarse la vida sin necesidad.

Haz caso a greeneyed.

PreparedStatement.

Saludos.
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 08:45.