You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用VB.NET通过窗体将视频文件添加到Access数据库?

如何用VB.NET将视频文件存入Access数据库的OLE对象字段

嗨,我懂你想通过VB.NET窗体把视频文件存入Access的OLE对象字段~既然你已经有存图片的代码,其实思路大同小异,只是处理的文件类型不同而已。下面我一步步给你拆解怎么修改和实现:

核心思路

和存储图片一样,视频文件本质是二进制数据,我们只需要把视频文件读取成字节数组,再写入Access的OLE对象字段就可以了——OLE对象字段专门用来存储这类二进制数据。

修改后的完整代码示例

基于你提供的图片存储代码,我调整成了视频版本,还补全了关键逻辑:

Imports System.IO
Imports System.Data.OleDb

Private Sub btn_Adicionar_Click(sender As System.Object, e As System.EventArgs) Handles btnIncluir.Click
    ' 第一步:打开文件选择框,让用户选视频
    Using openFileDialog As New OpenFileDialog()
        ' 设置支持的视频格式,你可以按需添加更多
        openFileDialog.Filter = "视频文件|*.mp4;*.avi;*.mov;*.wmv|所有文件|*.*"
        openFileDialog.Title = "选择要添加的视频文件"
        
        If openFileDialog.ShowDialog() = DialogResult.OK Then
            Dim videoFilePath As String = openFileDialog.FileName
            
            ' 第二步:把视频文件读取成字节数组
            Dim videoBytes As Byte() = File.ReadAllBytes(videoFilePath)
            
            ' 第三步:连接Access数据库并插入数据
            Using cn As New OleDbConnection()
                ' 根据你的Access版本选连接字符串:
                ' 如果你用的是旧版Access(.mdb文件):
                cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\YourDatabase.mdb"
                ' 如果是新版Access(.accdb文件),要确保电脑上安装了新版的Access数据库引擎:
                ' cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\YourDatabase.accdb"
                
                Using cmd As New OleDbCommand()
                    cmd.Connection = cn
                    ' 假设你的表叫Videos,有FileName(存文件名)和VideoData(OLE对象字段)两个列
                    cmd.CommandText = "INSERT INTO Videos (FileName, VideoData) VALUES (@FileName, @VideoData)"
                    
                    ' 给SQL命令加参数,避免SQL注入,也更安全
                    cmd.Parameters.AddWithValue("@FileName", Path.GetFileName(videoFilePath))
                    cmd.Parameters.AddWithValue("@VideoData", videoBytes)
                    
                    Try
                        cn.Open()
                        cmd.ExecuteNonQuery()
                        MessageBox.Show("视频成功存入数据库啦!")
                    Catch ex As Exception
                        MessageBox.Show("添加失败:" & ex.Message)
                    End Try
                End Using
            End Using
        End If
    End Using
End Sub

关键注意事项

  • 连接字符串适配:一定要根据你的Access文件类型(.mdb/.accdb)选对应的Provider,新版Access需要确保电脑上安装了对应版本的数据库引擎。
  • 字段类型正确:Access表中的存储字段必须设置为OLE对象,别选错成文本、备注这些类型,不然存不进去。
  • 大文件提醒:如果视频文件很大(比如几百MB以上),直接存入数据库会让数据库体积暴涨,读取和维护也会变慢。这种情况更推荐只把视频文件的路径存到数据库,视频文件本身放在本地文件夹里,这样性能和灵活性都更好。

可选:从数据库读取并播放视频

如果你之后需要把存进去的视频取出来播放,可以把字节数组写入临时文件,再用MediaPlayer控件播放:

Private Sub btn_PlayVideo_Click(sender As Object, e As EventArgs) Handles btn_PlayVideo.Click
    Using cn As New OleDbConnection()
        cn.ConnectionString = "你的数据库连接字符串"
        ' 假设根据文件名查询视频
        Using cmd As New OleDbCommand("SELECT VideoData FROM Videos WHERE FileName = @FileName", cn)
            cmd.Parameters.AddWithValue("@FileName", "你要播放的视频文件名.mp4")
            
            cn.Open()
            Dim videoBytes As Byte() = DirectCast(cmd.ExecuteScalar(), Byte())
            
            ' 写入临时文件,注意扩展名要和视频类型匹配
            Dim tempPath As String = Path.GetTempFileName() & ".mp4"
            File.WriteAllBytes(tempPath, videoBytes)
            
            ' 用AxWindowsMediaPlayer控件播放(需要先在工具箱添加这个控件)
            AxWindowsMediaPlayer1.URL = tempPath
        End Using
    End Using
End Sub

内容的提问来源于stack exchange,提问作者Hagar Sete

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:36:13