Guardar documento en base de datos

30/08/2006 - 00:50 por DanyInfo | Informe spam
necesito guardar un documento de cualquier formato en una base de datos sql
2000
con .net 2003 como lo podria hacer
agradeceria su colaboración.

salu2
 

Leer las respuestas

#1 SoftJaén
31/08/2006 - 17:42 | Informe spam
"DanyInfo" escribió:

necesito guardar un documento de cualquier formato en una base
de datos sql 2000
con .net 2003 como lo podria hacer



Hola:

Suponiendo que el tipo de datos del campo es «Image», lo único que tienes
que hacer es transformar el documento en un array de bytes, para guardarlo
en su correspondiente objeto DataTable. Posteriormente actualizarías la base
de datos utilizando para ello el método «Update» de un objeto
SqlDataAdapter.

Para transformar el documento en un array de byte, te podrías servir la
siguiente función, a la cual le deberás de pasar únicamente la ruta donde se
encuentra localizado el documento que deseas guardar:

Private Function ReadBinaryFile(ByVal fileName As String) As Byte()

' Si no existe el archivo, abandono la función.
'
If Not System.IO.File.Exists(fileName) Then Return Nothing

Try
' Leo el archivo especificado.
'
Dim fs As New FileStream(fileName, FileMode.Open, FileAccess.Read)
Dim data() As Byte = New Byte(Convert.ToInt32(fs.Length)) {}

fs.Read(data, 0, Convert.ToInt32(fs.Length))
fs.Close()

Return data

Catch ex As Exception
' Cualquier excepción producida, hace que la
' función devuelva el valor False.
'
Return Nothing

End Try

End Function

Si por ejemplo, ya tienes creado un objeto DataSet (ds), añadirías un nuevo
registro al objeto DataTable, ejecutando el siguiente código:

' Añado un nuevo registro.
'
Dim row As DataRow = ds.Tables("Documentos").NewRow()

' Leo el archivo binario para añadir su contenido
' al campo donde deseo guardar el documento.
'
row.Item("CampoBlob") = ReadBinaryFile(TextBox1.Text)

' Añadimos la fila a la colección Rows
ds.Tables("Imagenes").Rows.Add(row)

' Actualizamos la base de datos
objetoDataAdaptet.Update(ds, "Documentos")

Por supuesto, que previamente tendrás que haber definido los
correspondientes objetos SqlConnection, SqlDataAdpapter y SqlCommandBuilder,
para rellenar el objeto DataSet y poder actualizar el origen de los datos,
tal y como se haría para actualizar cualquier otro tipo de datos.

En definitiva, como te indiqué al principio, en el campo «Image» de la tabla
debes de guardar un array de bytes. Añadir, modificar y eliminar registros,
lo harías de igual manera que si estuvieras trabajando con otros tipos de
datos enteros o alfanuméricos.

Un saludo

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.

Preguntas similares