簡體   English   中英

將映像從db注入到sql報表查詢中

[英]inject image from db into sql report query

如果我正在創建針對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; }
}

只是為了弄清楚我知道將byte []轉換為Image但我不知道如何在上面的查詢中注入圖像。

以下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虛擬學院視頻)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM