Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用WinC窗体在数据库中存储和检索视频?_C#_Winforms_Video_Data Retrieval - Fatal编程技术网

C# 如何使用WinC窗体在数据库中存储和检索视频?

C# 如何使用WinC窗体在数据库中存储和检索视频?,c#,winforms,video,data-retrieval,C#,Winforms,Video,Data Retrieval,我有一个windows应用程序与C,我有用户可以添加和检索他们的数据视频文件的功能 如何使用WinC窗体在数据库中存储和检索视频? 是解决这个问题的任何方法。 谢谢你的帮助 在数据库中存储视频是个坏主意。当您试图从数据库加载视频时,这将减慢进程。而不是这样做,你应该将视频存储在硬盘中,并将文件路径仅存储在数据库中。因此,您可以快速流式传输视频。顺便说一句,如果您想在数据库中存储任何文件,而不是使用MemoryStream或FileStream读取所有字节,那么您可以在数据库中写入这些字节 试试这

我有一个windows应用程序与C,我有用户可以添加和检索他们的数据视频文件的功能 如何使用WinC窗体在数据库中存储和检索视频? 是解决这个问题的任何方法。
谢谢你的帮助

在数据库中存储视频是个坏主意。当您试图从数据库加载视频时,这将减慢进程。而不是这样做,你应该将视频存储在硬盘中,并将文件路径仅存储在数据库中。因此,您可以快速流式传输视频。顺便说一句,如果您想在数据库中存储任何文件,而不是使用MemoryStream或FileStream读取所有字节,那么您可以在数据库中写入这些字节

试试这个代码

注意:以下代码未编译,可能会导致错误。这只是为了了解如何在数据库中存储视频文件


在数据库中存储像视频这样的大文件不是一个好主意,将文件名存储在db中以便接收,directoriesvideos中的文件非常小,大约2或3 MBI,插入时没有问题。我的问题是,当用户希望将文件存储在特定路径中时,如何进行检索。@Shell我不确定说将视频存储在数据库中是个坏主意是否正确。我知道至少有三个企业内容管理系统ECM将视频存储在数据库中,并将其缓存以进行流式传输。Vimeo使用MySQL存储视频。
string path = @"D:\videos\myvideos.mpeg";

try
{
    using (FileStream fsSource = new FileStream(path, FileMode.Open, FileAccess.Read))
    {
        byte[] bytes = new byte[fsSource.Length];
        int numBytesToRead = (int)fsSource.Length;
        int numBytesRead = 0;
        while (numBytesToRead > 0)
        {
            // Read may return anything from 0 to numBytesToRead. 
            int n = fsSource.Read(bytes, numBytesRead, numBytesToRead);

            // Break when the end of the file is reached. 
            if (n == 0)
                break;

            numBytesRead += n;
            numBytesToRead -= n;
        }

        SqlCommand Cmd = Connection.CreateCommand();
        Cmd.CommandText = "Insert Into MyTable(ID,Video,FileName,Format,Size)Values(@ID,@Video,@FileName,@Format,@Size)";
        Cmd.Parameters.Add("@ID", SqlDbType.Int).Value = 1;
        Cmd.Parameters.Add("@Video", SqlDbType.VarBinary).Value = bytes;
        Cmd.Parameters.Add("@FileName", SqlDbType.Varchar).Value = "My File Name";
        Cmd.Parameters.Add("@Format", SqlDbType.Varchar).Value = "MPEG";
        Cmd.Parameters.Add("@Size", SqlDbType.Int).Value = bytes.length;
        Cmd.ExecuteNonQuery();
    }
}
catch (Exception e)
{
    Console.WriteLine(e.Message);
}