CLR: .Net / Mono / Boo / Otros CLR > C#

 obtener campo Lob(Oracle)

(1/2) > >>

lugarda:
Hola a todos, tengo una tabla en Oracle10g donde guardo las especificaciones de un documento y este campo es de tipo BLOB.
Estoy haciendo un programa en C# donde estoy intentando obtener estas especificaciones a traves de un OracleDataReader, pero no logro encontrar método que me permita hacerlo, lo intenté con GetString pero obviamente me saca error. Si alguien me puede dar una pista , se los agradeceria mucho.
Adjunto el pedazo de código que tengo.
Monica.


--- Código: C# ---  internal long obtenerPurc_ReqLnBinary(string codigoRequisicion, int lineaNo)        {            long especificaciones;            try            {                using (OracleCommand consulta = this.conexionOracle.CreateCommand())                {                    consulta.CommandText = (@" select bits                                                  from purc_req_ln_binary                                                where purc_req_id=:codigoRequisicion and purc_req_line_no=:lineaNo");                    consulta.Parameters.Add(new OracleParameter(":codigoRequisicion", OracleType.VarChar)).Value = codigoRequisicion;                    consulta.Parameters.Add(new OracleParameter(":lineaNo", OracleType.Int32)).Value = lineaNo;                    using (OracleDataReader cursor = consulta.ExecuteReader())                    {                        while (cursor.Read())                        {                            especificaciones= cursor.IsDBNull(0) ? null : cursor.GetString(0);   }                    }                }            }            catch (Exception e)            {                ExcepcionLafrancol ex = new ExcepcionLafrancol(e.Message);                ex.TipoExcepcion = e.GetType().ToString();                ex.Source = "Purc_Req_Ln_BinaryAD - [obtenerPurc_ReqLnBinary()]";                ex.Anotaciones = "Error en consulta de requisiciones";                throw ex;            }            return especificaciones;  

gabio2:
Mira, te paso la definición de un campo de tipo BLOB.

Blob. Se utiliza un campo Blob (Binary Large Object) para almacenar documentos u objetos en formato binario. Por ejemplo, podemos almacenar documentos creados por otras aplicaciones o guardar imágenes. El tamaño de un campo Blob es de 2 Gigabytes. El contenido de un campo Blob no se visualiza en pantalla.

Información obtenida de: http://www.faq-mac.com/cursos/4D/pag11.htm

Por lo tanto como dice "el contenido de un campo blob no se visualiza en pantalla", para eso tendrias tú que convertir ese documento y/o archivo en lo que tú desees. Para tu base de datos solo son 0 y 1, tú le aplicas ese formato.

Para hacer lo anterior se hace usando el FileStream.

No sé si con eso aclaro un poco más tu duda, o si te surgieron más.. jajajaja.. un saludo.. cualquier cosa pregunta.. :)

lugarda:
Muchas gracias por responder tan pronto. Mientras recibia respuesta del foro , seguí investigando y encontré un artículo donde encontré algo similiar a lo que necesito pero en mi caso lo que hay almacenado en este campo es texto y para ser sincera no se como convertir lo que esta almacenado en este campo , de tal manera que lo pueda ver por pantalla.
Si me puedes dar una idea de como usar el FileStream que me sugieres , te lo agradezco mucho. Por favor no creas que es pereza de investigar, solo es que mañana debo entregar el programa y aun me falta mucho.
Gracias.


--- Código: C# --- if (oraImgReader.GetValue(2).ToString() != ""){                        // Fetch the BLOB data through OracleDataReader using OracleBlob type                        OracleBlob blob = oraImgReader.GetOracleBlob(2);                        // Create a byte array of the size of the Blob obtained                        Byte[] byteArr =  new Byte[blob.Length];                        // Read blob data into byte array                        int i = blob.Read(byteArr,0,System.Convert.ToInt32(blob.Length));                        // Get the primitive byte data into in-memory data stream                        MemoryStream memStream = new MemoryStream(byteArr);                        // Attach the in-memory data stream to the PictureBox                        picEmpPhoto.Image = Image.FromStream(memStream);                        // Fit the image to the PictureBox size                        picEmpPhoto.SizeMode = PictureBoxSizeMode.StretchImage; }  

gabio2:
Tu campo de TIPO BLOB que contiene?.. LETRAS y/o Números?... o Archivos (.txt/.doc/.pdf/etc) ?....

lugarda:
Hola tiene letras y/o numeros.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa