繁体   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