使用C#中的Blob Literal字符串将图像写入SQL Server

本文关键字:图像 SQL Server 字符串 中的 Blob Literal 使用 | 更新日期: 2023-09-27 18:29:51

我有一个c#函数,它需要写入SQL映像列。我有一个字节数组中的图像。标准似乎是在将字节数组作为System.Data.SqlDbType.Image.类型的参数传递时使用SqlCommand

不幸的是,我的函数只能使用文本查询(不要问为什么),所以我必须找到一种只使用t-SQL命令的方法。到目前为止,我所拥有的内容可以写入列,但我不知道用什么格式的字符串来制作图像blob字符串。

sql = "DECLARE @ptrval binary(16)" +
"SELECT @ptrval = textptr(Photo) FROM EMPhoto WHERE Employee='" + employeeID + "'" +
"WRITETEXT EMPhoto.Photo @ptrval " + imageByteArrayAsString;

我尝试过将imageByteArray转换为十六进制字符串和二进制字符串,但它在SQL或读取它的应用程序中似乎不正确。

使用C#中的Blob Literal字符串将图像写入SQL Server

T-SQL二进制常量是一个以0x为前缀的无引号十六进制字符串。即0xFFD8FFE0…

string imageByteArrayAsString = "0x" + BitConverter.ToString(image).Replace("-", string.Empty);