Supongamos que tengo una columna VarBinary [MAX], ¿puedo insertar o actualizar en esa columna usando un tipo derivado de System.IO.Stream? ¿Cómo?¿Puedo usar una secuencia para INSERTAR o ACTUALIZAR una fila en SQL Server (C#)?
creo que puedo obtener una sólo lectura chorro de una columna de este tipo utilizando un SqlDataReader
, llamando GetSqlBytes() en el lector, conseguir la instancia SqlBytes, y luego referencia a la propiedad Stream en eso.
Lo que quiero es lo contrario: quiero un flujo para actualizar o insertar.
¿Posible? (De C# ... Sin escribir T-SQL?)
EDITAR
que he visto código como este:
System.Data.SqlClient.SqlCommand _SqlCommand
= new System.Data.SqlClient.SqlCommand(_SQL, _SqlConnection);
// Convert image to memory stream
System.IO.MemoryStream _MemoryStream = new System.IO.MemoryStream();
_Image.Save(_MemoryStream, _ImageFormat);
// Add image as SQL parameter
System.Data.SqlClient.SqlParameter _SqlParameter
= new System.Data.SqlClient.SqlParameter("@" + _ImageFieldName, SqlDbType.Image);
_SqlParameter.Value = _MemoryStream.ToArray();
_SqlCommand.Parameters.Add(_SqlParameter);
// Executes a Transact-SQL statement against the connection
// and returns the number of rows affected.
_SqlRetVal = _SqlCommand.ExecuteNonQuery();
// Dispose command
_SqlCommand.Dispose();
_SqlCommand = null;
... pero no lo sé quiero usar una matriz para especificar el valor. Eso funciona para tamaños de datos pequeños, pero no como los tamaños se hacen más grandes. Quiero escribir en una secuencia.
Ver https://stackoverflow.com/questions/2101149/how-to-i-serialize-alarge-graph-of-net-object-into-a-sql-server-blob-without/2151491# 2151491 para un ejemplo de cómo usar la semántica de transmisión para escribir en un BLOB –