我想在access数据库中存放有图片,文本和视频音像,然后在vb界面中将他们取出显示。
可不可以依次告诉我怎么在数据库中存放他们呢?字段是什么类型的?然后,需要什么控件用于他们的显示呢?the more the better,the detailed the better!
非常感谢!请不要笑我愚昧!谢谢!

解决方案 »

  1.   

    图片和视频用"OLE对象"型,文本就是文本型..建议你找基础的书看看,我贴一大堆的代码上来你也看不懂...
    Public Function AppendBlobFromFile(blobColumn As ADODB.Field, ByVal FileName) As Boolean
        Dim FileNumber As Integer      '文件号
        Dim DataLen As Long         '文件长度
        Dim Chunks As Long         '数据块数
        Dim ChunkAry() As Byte         '数据块数组
        Dim ChunkSize As Long         '数据块大小
        Dim Fragment As Long         '零碎数据大小
        Dim lngI As Long '计数器
        
        On Error GoTo ErrorHandle
        AppendBlobFromFile = False
        ChunkSize = 2048                    '限制每次读取的块大小为 2K
        
        FileNumber = FreeFile               '产生随机的文件号
        Open FileName For Binary Access Read As FileNumber      '打开图像文件
            DataLen = LOF(FileNumber)           '获得文件长度
            'If IsNull(blobColumn) Then Exit Function
            If DataLen = 0 Then                 '文件长度为0
                Close FileNumber
                AppendBlobFromFile = True
                Exit Function
            End If
                
            Chunks = DataLen \ ChunkSize        '数据块的个数
            Fragment = DataLen Mod ChunkSize
            If Fragment > 0 Then            '先写零碎数据
            ReDim ChunkAry(Fragment - 1)
                Get FileNumber, , ChunkAry()        '读出文件
                blobColumn.AppendChunk ChunkAry '调用AppendChunk函数写数据
            End If
                
            ReDim ChunkAry(ChunkSize - 1)       '为数据块开辟空间
            For lngI = 1 To Chunks                  '循环读出所有数据块
                Get FileNumber, , ChunkAry()        '读出一块数据
                blobColumn.AppendChunk ChunkAry     '在数据库中增加数据块
            Next lngI
        Close FileNumber            '关闭文件
        AppendBlobFromFile = True
        Exit Function
    ErrorHandle:
        AppendBlobFromFile = False
        MsgBox Err.Description, vbCritical, "写图像数据出错!"
    End Function' 读数据函数
    Public Function ReadbolbToFile(blobColumn As ADODB.Field, ByVal FileName) As Boolean
        Dim FileNumber As Integer      '文件号
        Dim DataLen As Long         '文件长度
        Dim Chunks As Long         '数据块数
        Dim ChunkAry() As Byte         '数据块数组
        Dim ChunkSize As Long         '数据块大小
        Dim Fragment As Long         '零碎数据大小
        Dim lngI As Long '计数器
        
        On Error GoTo ErrorHandle
        ReadbolbToFile = False
        ChunkSize = 2048                    '定义块大小为 2K
        If IsNull(blobColumn) Then Exit Function
        DataLen = blobColumn.ActualSize         '获得图像大小
        If DataLen < 8 Then Exit Function   '图像大小小于8字节时认为不是图像信息
            FileNumber = FreeFile               '产生随机的文件号
        Open FileName For Binary Access Write As FileNumber     '打开存放图像数据文件
        Chunks = DataLen \ ChunkSize        '数据块数
        Fragment = DataLen Mod ChunkSize    '零碎数据
        If Fragment > 0 Then            '有零碎数据,则先读该数据
                ReDim ChunkAry(Fragment - 1)
                ChunkAry = blobColumn.GetChunk(Fragment)
                Put FileNumber, , ChunkAry      '写入文件
        End If    ReDim ChunkAry(ChunkSize - 1)             '为数据块重新开辟空间
        For lngI = 1 To Chunks                              '循环读出所有块
                ChunkAry = blobColumn.GetChunk(ChunkSize)   '在数据库中连续读数据块
                Put FileNumber, , ChunkAry()    '将数据块写入文件中
        Next lngI
        Close FileNumber            '关闭文件
        ReadbolbToFile = True
        Exit Function
    ErrorHandle:
            ReadbolbToFile = False
            MsgBox Err.Description, vbCritical, "读图像数据出错!"
    End Function
      

  2.   

    Option ExplicitDim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim mst As ADODB.StreamPrivate Sub Command1_Click()'写入图片的一个简单示例,文本,视频类似处理
        Dim str As String
        str = App.Path
        Set cn = New ADODB.Connection
        cn.Open "provider=microsoft.jet.oledb.4.0;data source=" + App.Path + "\db1.mdb;"
        Set rs = New ADODB.Recordset
        rs.Open "select * from sample", cn, adOpenStatic, adLockOptimistic
        Set mst = New ADODB.Stream
        mst.Type = adTypeBinary
        mst.Open
        Do While Not rs.EOF
           rs.Delete
           rs.MoveNext
        Loop
        mst.LoadFromFile App.Path + "\" + Text1.Text + ".jpg"
        rs.AddNew
        rs.Fields("Photo").Value = mst.Read
        rs.Update
        rs.Close
        cn.Close
    End SubPrivate Sub Command2_Click()'读出图片的一个简单示例,文本,视频类似处理
        Set cn = New ADODB.Connection
        cn.Open "provider=microsoft.jet.oledb.4.0;data source=" + App.Path + "\db1.mdb;"
        Set rs = New ADODB.Recordset
        rs.Open "select * from sample", cn, adOpenKeyset, adLockOptimistic
        Set mst = New ADODB.Stream
        mst.Type = adTypeBinary
        mst.Open
        mst.Write rs.Fields("Photo").Value
        mst.SaveToFile App.Path + "\photo.jpg", adSaveCreateOverWrite
        Image1.Picture = LoadPicture(App.Path + "\photo.jpg")
        Kill App.Path + "\photo.jpg"
        rs.Close
        cn.Close
    End Sub
      

  3.   

    对了,要求ADO对象版本2.5以上。