数据库  是 sql server 2000 最好有完善关键代码

解决方案 »

  1.   

    使用流对象保存和显示图片 
    打开vb6,新建工程。添加两个按钮,一个image控件
    注意:Access中的photo字段类型为OLE对象.
    SqlServer中的photo字段类型为Image'** 引用 Microsoft ActiveX Data Objects 2.5 Library 及以上版本
    ‘2.5版本以下不支持Stream对象
    Dim iConcstr As String
    Dim iConc As ADODB.Connection
     '保存文件到数据库中
    Sub s_SaveFile()
        Dim iStm As ADODB.Stream
        Dim iRe As ADODB.Recordset
        Dim iConcstr As String    '读取文件到内容
        Set iStm = New ADODB.Stream
        With iStm
            .Type = adTypeBinary   '二进制模式
            .Open
            .LoadFromFile App.Path + "\test.jpg"
        End With
           '打开保存文件的表
        Set iRe = New ADODB.Recordset
        With iRe
            .Open "select * from img", iConc, 1, 3
            .AddNew         '新增一条记录
            .Fields("photo") = iStm.Read
            .Update
        End With
          '完成后关闭对象
        iRe.Close
        iStm.Close
    End Sub
    Sub s_ReadFile()
        Dim iStm As ADODB.Stream
        Dim iRe As ADODB.Recordset
        '打开表
    Set iRe = New ADODB.Recordset
    ‘得到最新添加的纪录
        iRe.Open "select top 1 * from img order by id desc", iConc, adOpenKeyset, adLockReadOnly
        '保存到文件
        Set iStm = New ADODB.Stream
        With iStm
            .Mode = adModeReadWrite
            .Type = adTypeBinary
            .Open
            .Write iRe("photo")
    ‘这里注意了,如果当前目录下存在test1.jpg,会报一个文件写入失败的错误.
            .SaveToFile App.Path & "\test1.jpg"
        End With
           Image1.Picture = LoadPicture(App.Path & "\test1.jpg")
       '关闭对象
        iRe.Close
        iStm.Close
    End Sub
     Private Sub Command1_Click()
    Call s_ReadFile
    End Sub
    Private Sub Command2_Click()
    Call s_SaveFile
    End Sub
    Private Sub Form_Load()
        '数据库连接字符串
        iConcstr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
            ";Data Source=F:\csdn_vb\database\保存图片\access图片\img.mdb"‘下面的语句是连接sqlserver数据库的.
        ‘iConcstr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _
    ‘ "User ID=sa;Password=;Initial Catalog=test;Data Source=yang"
        Set iConc = New ADODB.Connection
       iConc.Open iConcstr
    End Sub
     Private Sub Form_Unload(Cancel As Integer)
    iConc.Close
    Set iConc = Nothing
    End Sub
      

  2.   

    主要就是读写二进制流啦,和图像格式倒没有关系,前几天正好有这个帖供你参考:http://topic.csdn.net/u/20090311/15/AD4CF2D9-18CE-4034-A985-929CFBA8CAC9.html
    请求帮忙看一下这段图片存取的代码,另有问题请求解答,谢谢!
      

  3.   

    给两个通用函数,只需要传字段对像和文件名就可以了,超好用。
    Public Function SaveFieldDataToFile(blobColumn As ADODB.Field, ByVal filename) As Boolean
        On Error GoTo ErrorHandle
        
        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 '计数器    SaveFieldDataToFile = False
        ChunkSize = 2048           '定义块大小为 2K
        If IsNull(blobColumn) Then GoTo funcEnd
        
        DataLen = blobColumn.ActualSize      '获得图像大小
        If DataLen < 8 Then GoTo funcEnd      '图像大小小于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   '关闭文件
        
        SaveFieldDataToFile = True
        
        GoTo funcEnd
    ErrorHandle:
        SaveFieldDataToFile = False
        MsgBox err.Description, vbCritical, "读图像数据出错!"
        
    funcEnd:
    End Function'Need Fix
    '该函数的调用者不存在,可能在原设备数据录入中的"照片更新中"
    Public Function PutFileDataToField(blobColumn As ADODB.Field, ByVal filename) As Boolean
        On Error GoTo ErrorHandle
        
        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 '计数器
        
        PutFileDataToField = False    ChunkSize = 2048           '限制每次读取的块大小为 2K    FileNumber = FreeFile      '产生随机的文件号    Open filename For Binary Access Read As FileNumber   '打开图像文件    DataLen = LOF(FileNumber)     '获得文件长度    If IsNull(blobColumn) Then
            Close FileNumber
            GoTo funcEnd
        End If    If DataLen = 0 Then           '文件长度为0
          Close FileNumber
          PutFileDataToField = True
          GoTo funcEnd
        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   '关闭文件
        PutFileDataToField = True
        GoTo funcEndErrorHandle:
        PutFileDataToField = False
        MsgBox err.Description, vbCritical, "写图像数据出错!"
        
    funcEnd:
    End Function
      

  4.   

    http://download.csdn.net/source/1483930
      

  5.   

    饭都给做好了,还得喂到嘴里......
    调用1楼的s_ReadFile,图片加载到image里,字符串连接改为连sql数据库的