使用Powershell将图像插入VARBINARY(MAX)类型的SQL Server列中

时间:2018-10-24 16:44:51

标签: sql-server powershell

我被困住了。我正在尝试将硬盘中的图片插入类型为VARBINARY(MAX)的SQL Server列中。我已经将其转换为某种东西,但是我什至不确定它是什么。结果看起来像“ 81 69 20 0 81 69 20 0 81 69 20 0 81 69 20 0 81 69 20 0 81 69 20 0 81”,但更长。在我的更新命令中,如果我将$ file替换为01234,则更新不会出现任何问题,因此我几乎可以肯定,将其转换为正确的格式是一个问题。

$i = 1
$shape|foreach{
if ($shape.Item($i).name.Substring(0, 7) -eq 'Picture')
    {
        #write-host $shape.Item($i).name
        $shape.Item($i).copy()

        #write-host $firstChart.name
        $firstChart.paste()
        $firstChart.Export("c:\temp\pictures\image1.jpg", "JPG")
        #$firstChart.Delete

        [Byte[]]$file = get-content -Encoding Byte C:\TEMP\pictures\image1.jpg

        #$file = [convert]::ToBase64String((get-content C:\TEMP\pictures\image1.jpg -encoding byte))

        $cmd.CommandText ="UPDATE QuoteData SET PII_Image1 = $file Where QuoteNumber =  '"+$WorkSheet.Range('G7').Text.replace("'","''")+"'"
        $cmd.ExecuteNonQuery()
    }
    $i++
}

1 个答案:

答案 0 :(得分:1)

您的字节数组需要转换为十六进制表示形式。请注意,添加了$ hexString行,并且更改了$ cmd.CommandText。

    [Byte[]]$file = get-content -Encoding Byte C:\TEMP\pictures\image1.jpg
    $hexString = ($file|ForEach-Object ToString X2) -join ''
    $hexString = '0x'+$hexString 

    $cmd.CommandText ="UPDATE QuoteData SET PII_Image1 = $hexString Where QuoteNumber =  '"+$WorkSheet.Range('G7').Text.replace("'","''")+"'"