无法转换类型' Microsoft.SqlServer.Dts.Pipeline.BlobColumn'输入' System.Byte []'

时间:2017-05-17 11:22:52

标签: c# sql-server asp.net-mvc

我有一个脚本从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.FilmeImageOurMicrosoft.SqlServer.Dts.Pipeline.BlobColumn Input0Buffer.FileImageOutRow.imgFileContentMicrosoft.SqlServer.Dts.Pipeline.BlobColumn Input0Buffer.imgFileContent

在搜索解决方案时,我发现this但我并不是真的了解这个解决方案,如果它甚至适用的话。我尝试使用addBlobData代替=,但它需要byte输入而不是blob数据。我似乎无法找到任何允许我们将blob数据分配给blob数据的函数?

1 个答案:

答案 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
    }