No me interesaba tanto la funcionalidad de realizar la insercción desde mi pequeño proyectito de C#, me quería enfocar a leer dicho dato para luego serializarlo y exponerlo en un Web Service.
Esto fue lo que me encontré por ahi:
T-SQL
1: CREATE TABLE MiTabla
2: (id int, image varbinary(max))
3: INSERT INTO MiTabla
4: SELECT 1 as id
5: ,(SELECT * FROM OPENROWSET(
6: BULK 'C:\popita.jpg', SINGLE_BLOB) as image )
Recordar, estamos guardando la imagen como bytes no un objeto Image ó Bitmap.
Para leer este desde C# es bastante sencillo:
(Ustedes hagan todo su rollo de la conección a la base de datos...pondré solo lo sustancial...)
C#
1: SqlDataReader rdrGetData=(new SqlCommand("SELECT * FROM MiTabla WHERE id=1",miSQLConn)).ExecuteReader();
2: if(rdrGetData.HasRows)
3: {
4: rdrGetData.Read();
5: if (!rdrGetData.IsDBNull(1))
6: {
7: SqlBytes bytes = rdrGetData.GetSqlBytes(1);
8: FileStream fs = new FileStream("g:\\popis.jpg", FileMode.OpenOrCreate, FileAccess.Write);
9: byte[] byteImage = new byte[bytes.Length];
10: int readedBytes=bytes.Stream.Read(byteImage, 0, Convert.ToInt32(bytes.Length));
11: fs.Write(byteImage, 0, byteImage.Length);
12: fs.Close();
13: }
No olviden cerrar el DataReader
No hay comentarios:
Publicar un comentario