如何使用c# winforms在数据库中存储和检索视频

本文关键字:存储 检索 视频 数据库 何使用 winforms | 更新日期: 2023-09-27 18:13:03

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

如何使用c# winforms在数据库中存储和检索视频

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

试试这段代码。

注意:下面的代码是不编译的,它可能会给你错误。这只是为了了解如何在数据库中存储视频文件。

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);
}