Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/07/2011, 05:28
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: La Columna no puede ser nula

Bueno, este es uno de esos casos por los que se recomienda (y es regla del Foro) no poner código de programación: Este código está escondiendo el error mezclado entre las variables y la sintaxis del lenguaje que usas.
Básicamente es simple: El campo que te rae problemas o es PK en su tabla o es FK, está declarado como NOT NULL y no tiene valor por default. El problema es que para ver dónde está el error hay que reescribir la sentencia de modo de ver los campos un poco mejor:

Código MySQL:
Ver original
  1. insert into componente(
  2.   IdTipo,
  3.   Nombre,
  4.   Descripcion,
  5.   IdVersion,
  6.   IdModelo,
  7.   Obsoleto)
  8.   (select IdTipo from tipo where Nombre='"+componente.getTipo()+"'),
  9.   '"+componente.getNombre()+"',
  10.   '"+componente.getDescripcion()+"',
  11.   (select IdVersion from version where Nombre='"+componente.getTipo()+"'),
  12.   (select IdModelo from modelo where Nombre='"+componente.getModelo()+"'),
  13.   0)
Puesto de este modo podemos ver que la cantidad de campos a ingresar y la cantidad de datos es la misma, pero...
Estás usando subconsultas para obtener los datos directamente, sin verificar si los valores devueltos son válidos, y esto puede suceder si esas variables no contienen datos válidos en su tabla origen...
Es decir, estás usando componente.getTipo() y componente.getModelo(), pero "realmente contienen datos que devuelvan algo?
Lo mejor sería que hagas lo que siempre aconsejamos: captura la consulta creada ANTES de ejecutarse, cuando ya estén los valores reales, y pruébala en alguna interfase de tipo phpMyAdmin, MySQL Workbench, Navicat o algo así. De ese modo sabrás si realmente está devolviendo algo, porque el campo idTipo está llegando NULLL.

¿se entiende la idea?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)