【发布时间】:2011-01-28 10:06:34
【问题描述】:
假设我有一个 VarBinary[MAX] 列,我可以使用派生自 System.IO.Stream 的类型插入或更新该列吗?如何?
我认为我可以使用SqlDataReader 从此类列中获取只读流,在阅读器上调用GetSqlBytes(),获取SqlBytes 实例,然后引用@987654322 @ 属性。
我想要的是相反的 - 我想要一个用于更新或插入的流。
可能吗? (来自c#...不写T-SQL?)
编辑
我见过这样的代码:
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;
...但我不想使用数组来指定值。这适用于小数据大小,但不适用于数据变大。我想写入流。
【问题讨论】:
-
查看stackoverflow.com/questions/2101149/… 了解如何使用流语义写入 BLOB 的示例
标签: c# .net sql-server stream