El experto de Axpe Consulting: Guardar ficheros binarios en SQL Server
22 Mayo, 2007
Continuando con la vocación que queremos darle a este blog de Axpe Consulting os volvemos a presentar un artículo escrito por uno de nuestros expertos en .NET y Bases de Datos sobre un aspecto técnico que creemos que puede parecer no sólo muy interesante sino que útil a todos vosotros: Cómo guardar ficheros binarios en SQL Server.
En un antiguo proyecto, una aplicación ASP .NET, el cliente expresó el deseo de guardar en la base de datos sus cartas, basadas en plantillas Word y generadas mediante la aplicación. Querían guardarlas en la base de datos porque, al ser documentos oficiales, tenían que poder volver a imprimirse o visualizarse exactamente igual a como se crearon en su día. Por lo tanto, necesitamos un método para guardar los ficheros Word en la base de datos en formato binario, como stream de datos y ser capaces de poder recuperarlos después para su visualización.
Nota: no es el objetivo de este post la creación de ficheros Word desde código C#. Podéis usar para ello la automatización Word, o componentes de terceros como los publicados por Aspose, que son excelentes.
Vamos a crear una tabla simple en SQL Server para alojar los documentos. Para este ejemplo, la llamaremos DocsBinarios, y tendrá la siguiente estructura:
| Campo | Tipo | Nulos? |
| DocId | Int (identity) | No |
| Documento | Image | No |
| NombreDoc | VarChar(100) | No |
Es bastante autoexplicativo: el campo DocId es un campo de clave primaria autogenerado. El campo Documento es el que va a almacenar los streams de bits, es decir los propios ficheros Word en formato binario. El campo NombreDoc almacenará el nombre que se proporcionó originalmente al documento cuando se generó.
Después crearemos un procedimiento almacenado, UploadDocs, que servirá para guardar registros en esta tabla: