要做一个员工表,用sqlserver来保存,表中有个字段是用来保存员工的照片的,请问字段的类型应该如何设置?
我是这样得到员工照片的:
Private Sub Command1_Click()
    CDlg.FileName = ""
    CDlg.ShowOpen
    If CDlg.FileName <> "" Then
     Imgphoto.Picture = LoadPicture(CDlg.FileName)
    End IfEnd Sub
用images来放置员工照片,那么我保存的时候,是怎样把照片保存到sqlserver员工表的那个字段中
Dim mRst As New ADODB.Recordset
    mRst("photo") = Imgphoto.Picture      
这样好象不行,应该怎样呢???
请大虾指教,小菜先谢过了~

解决方案 »

  1.   

    如何使用 ADO Stream 对象访问和修改 SQL Server BLOB 数据
    http://support.microsoft.com/default.aspx?scid=kb;zh-cn;258038
      

  2.   

    使用流对象保存和显示图片 
    打开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
      

  3.   

    字段类型可以用image或者binary
      

  4.   

    '窗体放一个Command1->保存,一个Command2->读取,一个Picture1,一个Picture2
    '引用 Microsoft ActiveX Data Objects 2.5 Library 及以上版本
    '字段Photo为Image类型(SQL库)或Ole对象类型(Access库)
    Private Sub Command1_Click()
      On Error GoTo err
      Dim StmPic As ADODB.Stream
        '保存你所选择的图像
        Set StmPic = New ADODB.Stream
        StmPic.Type = adTypeBinary    '指定流是二进制类型
        CommonDialog1.ShowOpen
        Picture1.Picture = LoadPicture(CommonDialog1.FileName)
        StmPic.Open                     '将数据获取到Stream对象中
        StmPic.LoadFromFile (CommonDialog1.FileName) '将选择的图像加载到打开的StmPic中
        rs.AddNew
        rs.Fields("photo").Value = StmPic.Read   '从StmPic对象中读取数据
        rs.Update
        StmPic.Close
      Exit Sub
    err:
      MsgBox err.Description
    End SubPrivate Sub Command2_Click()
         Dim StmPic As ADODB.Stream
         On Error GoTo err
            '读取显示数据库中的图像
            Set StmPic = New ADODB.Stream
            With StmPic
                .Type = adTypeBinary
                .Open
                .Write rs.Fields("photo")       '写入数据库中的数据至Stream中
                .SaveToFile StrPicTemp, adSaveCreateOverWrite  '将Stream中数据写入临时文件中
                .Close
            End With
            Picture2.Picture = LoadPicture(StrPicTemp)  '用Picture控件显示图像
        Exit Sub
    err:
         MsgBox err.Description
    End Sub