CLR: .Net / Mono / Boo / Otros CLR > C#
obtener campo Lob(Oracle)
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
[#] Página Siguiente
Ir a la versión completa