RESPONDER UNA PREGUNTA

Si para responder la pregunta, crees necesario enviar un archivo adjunto, puedes hacerlo a traves del correo [email protected]

    Pregunta:  63257 - CONSULTA CON ERROR EN C# CON ORACLE AL INSERTAR UNA IMAGEN
Autor:  Panxo Panxo
Consulta:
Tengo un formulario donde se ingresa una imagen y datos de un producto, al ingresarlo este producto ingresa en 3 tablas por diferentes procedimientos almacenados. para ello trabajo en querys transaccionales (si una falla no hará nada aunque haya ingresado en una tabla anteriormente)

Ahora, al ingresar los datos con la imágen nula, me ingresa perfectamente, pero al agregarle una imagen (de pequeña resolucion) y al ingresar el producto me da error...

Estoy trabajando con Oracle (blob el campo de la imagen) y con c#

alguno sabria explicar por que pasaria eso?

tengo esto:
ok, este petenece al formulario y es cuando ingresa la imagen a la entidad
ENTIDAD = new ENTIDAD();
[codigo]
ENTIDAD.imagen = grabaImagen((Bitmap)pbxFoto.Image);
[/codigo]

ahora en la capa acceso de datos al utilizar el Procedimiento Almacenado y utilizando un campo DateTable llamado tabla y oracleparameter p

[codigo]
p[x] = new OracleParameter("param_imagen_producto", OracleType.Blob);
p[x].Value = ENTIDAD.Imagen_producto;
p[x].Direction = ParameterDirection.InputOutput;

p[x] = new OracleParameter("param_salida", OracleType.Cursor);
p[x].Direction = ParameterDirection.Output;


AccesoDatos = new clsADAccesoDatosOracle();
AccesoDatos.IniciaTran();
tabla = AccesoDatos.EjecutaQueryOracleTran("PKG_P.pa_insertaproducto", p);
[/codigo]

el catch me trae este mensaje: "Referencia a objeto no establecida como instancia de un objeto."

Ahota si ejecuto el IniciaTran() abajo de tabla, corre perfectamente sin errores, pero lo malo es que si algún procedimiento que sigue es erroneo (y se ejecutan de la misma manera) no realizarán ningún commit y solo quedara ingresado por el primer Procedimiento

la imagen está ingresando en byte[], pero la cosa es que cuando inicio el trans esos registros que estoy guardando quedan "flotando" hasta que se realize el commit que eso pasa en el último procedimiento que se realiza dentro de la capa de acceso de datos, para que no ingrese los registros en las tablas inmediatamente por seguridad por si llegase a fallar uno de los otros procedimientos. porque si yo hiciera esto...
(pusiera debajo de la ejecución del procedimiento el trans)

[codigo]

AccesoDatos = new clsADAccesoDatosOracle();

tabla = AccesoDatos.EjecutaQueryOracleTran("PKG_P.pa_insertaproducto", p);

AccesoDatos.IniciaTran();

[/codigo]

no me tira ningún error e ingresa la imagen en la tabla de la entidad... pero lo malo es que si llegase a fallar uno de los otros procedimientos, no insertará en las demas tablas y solo insertara en la tabla de la entidad de producto.

Ese es el problema :(
intenté dejar la imagen estatica, pero tampoco sirve :(
(el trans la destruye por asi decirlo)


Nombre
Apellidos
Correo
Comentarios