簡體   English   中英

如何使用C#從SQL檢索二進制數據?

[英]How can I retrieve binary data from sql with c#?

我以下面的代碼為例檢索了保存在文件流列中的數據,並將其放入內存流或字節數組中。 如何使用默認設置打開它?

OS應用程序,例如使用照片管理器打開照片或使用MS Word打開Word文檔? 通常我使用Process.Start命令, 但是它不適用於memorystream或byte數組,那么該怎么做?

 public DataTable RetriveFile(int Code)
        {
            mydbms d = new mydbms();
            DataTable dt;


           String com2 = "select * from Matn_Naame where Code=" + Code + ";";
           dt = d.executeselectsql(com2);


            return dt;
        }
{
Letter_Manager L_M = new Letter_Manager();
            Byte[] b;
            DataTable dt = new DataTable();
            dt = L_M.RetriveFile(6);

            b=(Byte[])dt.Rows[0]["fileContent"];
            path = dt.Rows[0]["Path"].ToString();

                 MemoryStream Memory = new MemoryStream(b);
                 Memory.Write(b, 0, b.Length);
//??????????????????**?for open and show file**
}

您將需要將數據保存到一個臨時文件中。 可以通過調用System.IO.Path.GetTempFileName()獲得臨時文件名。 然后,您可以簡單地使用FileStream保存到該路徑,並如上所述,使用Process.Start啟動默認應用程序。

最簡單的方法是使用便捷的File.WriteAllBytes方法,該方法將字節數組直接寫入指定的文件名。

var fileName = Path.ChangeExtension(Path.GetTempFileName(), "txt");
File.WriteAllBytes(fileName, b);
Process.Start(fileName);

請注意,在我的示例中,我假設您正在處理要使用默認文本編輯器打開的純文本數據。

除非您提供有意義的擴展名,否則Windows將不知道啟動該文件的應用程序。 您或者必須預先知道數據的格式,以便可以附加正確的擴展名,或者需要使用可以猜測數據類型的庫,例如出色的TrID文件識別工具。

暫無
暫無

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

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