如果我正在创建针对mssql db的简单报告查询
if not exists(select * from DeliveryTemplate where TemplateId=2)
begin
select u.usersCode, 1,2,'User {UsersCode}',' hello {Username},', null, dt.DeliveryCode
from User u
left join DeliveryTemplate dt on u.Id = dt.UserId
end
如何扩展此查询以便从数据库中插入图像,其中此图像在DeliveryTemplate中表示为byte []
public class DeliveryTemplate{
...
public virtual byte[] MyImage { get; set; }
}
要明确I know to transform byte[] to Image,但我不知道如何在上述查询中注入图片。
答案 0 :(得分:0)
以下T-SQL为我工作:
UPDATE DeliveryTemplate SET MyImage =
(SELECT * FROM OPENROWSET (BULK N'C:\Images\Image.jpg', SINGLE_BLOB) rs)
WHERE UserId = identity_value
修改:按如下方式创建图片字段:
ALTER TABLE DeliveryTemplate ADD MyImage VARBINARY(MAX) NULL
注意您必须将图像存储在SQL Server具有访问权限的文件夹中。如果它是一个自定义文件夹(如上所述),您需要为SQL Server提供持久性(我认为它的用户是MSSQL $ MSSQLSERVER2012,具体取决于您的SQL版本)。
您可以通过检查SQL数据文件夹或数据库的MDF文件存储位置的权限来检查这一点(在SSMS中,右键单击数据库>属性>文件)。在我的机器上,数据库存储在C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER2012\MSSQL\DATA
。
当然,您不希望在该文件夹中看到太多,因为您的数据库实际存储在那里。但是您可以使用它来测试上面的SQL代码并将图像放入数据库中。在任何情况下你都不想删除那里的任何MDF或LDF文件! (删除MDF文件是一个“恢复生成事件”,引用克里斯托弗·哈里森的优秀MS虚拟学院视频)