我有一个脚本从SQL数组中获取文件(通常是图像或pdf),如果需要解压缩,然后将其内容复制到另一个单元格。但是,由于我不理解的原因,程序因某些未压缩的文件失败而出现错误:Unable to cast object of type 'Microsoft.SqlServer.Dts.Pipeline.BlobColumn' to type 'System.Byte[]'.
。
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
if (Row.bitCompressed)
{
byte[] inputData = Row.imgFileContent.GetBlobData(0, (int)Row.imgFileContent.Length);
Row.FileImageOut.AddBlobData(Decompress(inputData));
}
else
{
Row.FileImageOut = Row.imgFileContent; <--- ERROR
}
}
Row.FilmeImageOur
是Microsoft.SqlServer.Dts.Pipeline.BlobColumn Input0Buffer.FileImageOut
而Row.imgFileContent
是Microsoft.SqlServer.Dts.Pipeline.BlobColumn Input0Buffer.imgFileContent
。
在搜索解决方案时,我发现this但我并不是真的了解这个解决方案,如果它甚至适用的话。我尝试使用addBlobData
代替=
,但它需要byte
输入而不是blob数据。我似乎无法找到任何允许我们将blob数据分配给blob数据的函数?
答案 0 :(得分:0)
将我的else
{
byte[] copyData = Row.imgFileContent.GetBlobData(0, checked((Int32)Row.imgFileContent.Length));
Row.FileImageOut.AddBlobData(copyData, checked((Int32)Row.imgFileContent.Length));
}
代码更改为此代码似乎有效,但它似乎效率也很低。首先我将blob数据转换为字节数组,然后我将该数组添加到blob数据中。我不能简单地分配这些值的事实(因为它有时只是打破)似乎对我来说是个错误
public class emptyOrZeroIntegerException extends Exception{
public emptyOrZeroIntegerException()
{
super();
// TODO Auto-generated constructor stub
}
public emptyOrZeroIntegerException(String message)
{
super(message);
// TODO Auto-generated constructor stub
}