怎样将图片插入数据库?怎么在数据库中查询到图片吊出来?

解决方案 »

  1.   

    使用Stream对象,可以实现对数据库的图像存取。
    SQL数据库中存放图像的字段是image, Access为OLE类型。
    比如,如果用“CommonDialog”控件来选择你硬盘上的图像文件;
    用“Picture”控件来显示图像,那么下面的代码供参考:
    (运行VB,选择“工程\引用”命令,引用“Microsoft AetiveX Date 2.5 Library”。已连接数据库,打开了相应的记录集rs)
        Dim StmPic As ADODB.Stream
        Dim StrPicTemp As String
      ......
      '保存你所选择的图像
      Set StmPic = New ADODB.Stream
        StmPic.Type = adTypeBinary    '指定流是二进制类型
        StmPic.Open           '将数据获取到Stream对象中
        StmPic.LoadFromFile (CommonDialog1.FileName) '将选择的图像加载到打开的StmPic中
        rs.AddNew
        rs.Fields(1).Value = StmPic.Read   '从StmPic对象中读取数据
        rs.Update
        StmPic.Close
      ......
      '读取显示数据库中的图像
      Set StmPic = New ADODB.Stream
        StrPicTemp = "c:\temp.tmp"    '临时文件,用来保存读出的图片
        With StmPic
        .Type = adTypeBinary      
        .Open                     
        .Write rs.Fields(1)       '写入数据库中的数据至Stream中
        .SaveToFile StrPicTemp, adSaveCreateOverWrite  '将Stream中数据写入临时文件中
        .Close
      End With
      Picture1.Picture = LoadPicture(StrPicTemp)  '用Picture控件显示图像
      ......贴了N遍 ^_^
      

  2.   

    用image \picture 用Ado ,贴子很多,自己搜索一下了!
      

  3.   


    VB6向SQL SERVER存取图象:
    http://support.microsoft.com/default.aspx?scid=kb;EN-US;258038
      

  4.   

    ADODB.Stream必须在ADO2.5以上低于2.5版本可采用AppendChunk方法
    The ADO code is:Public Sub AppendChunkX()   Dim cn As ADODB.Connection
       Dim rstPubInfo As ADODB.Recordset
       Dim strCn As String
       Dim strPubID As String
       Dim strPRInfo As String
       Dim lngOffset As Long
       Dim lngLogoSize As Long
       Dim varLogo As Variant
       Dim varChunk As Variant   Const conChunkSize = 100   ' Open a connection.
       Set cn = New ADODB.Connection
       strCn = "Server=srv;Database=pubs;UID=sa;Pwd=;"   cn.Provider = "sqloledb"
       cn.Open strCn   'Open the pub_info_x table.
       Set rstPubInfo = New ADODB.Recordset
       rstPubInfo.CursorType = adOpenDynamic
       rstPubInfo.LockType = adLockOptimistic
       rstPubInfo.Open "pub_info_x", cn, , , adCmdTable   'Prompt for a logo to copy.
       strMsg = "Available logos are : " & vbCr & vbCr   Do While Not rstPubInfo.EOF
          strMsg = strMsg & rstPubInfo!pub_id & vbCr & _ 
            Left(rstPubInfo!pr_info,
             InStr(rstPubInfo!pr_info, ",") - 1) & vbCr & vbCr
          rstPubInfo.MoveNext
       Loop   strMsg = strMsg & "Enter the ID of a logo to copy:"
       strPubID = InputBox(strMsg)   ' Copy the logo to a variable in chunks.
       rstPubInfo.Filter = "pub_id = '" & strPubID & "'"
       lngLogoSize = rstPubInfo!logo.ActualSize
       Do While lngOffset < lngLogoSize
          varChunk = rstPubInfo!logo.GetChunk(conChunkSize)
          varLogo = varLogo & varChunk
          lngOffset = lngOffset + conChunkSize
       Loop   ' Get data from the user.
       strPubID = Trim(InputBox("Enter a new pub ID:"))
       strPRInfo = Trim(InputBox("Enter descriptive text:"))   ' Add a new record, copying the logo in chunks.
       rstPubInfo.AddNew
       rstPubInfo!pub_id = strPubID
       rstPubInfo!pr_info = strPRInfo
       lngOffset = 0   ' Reset offset.   Do While lngOffset < lngLogoSize
          varChunk = LeftB(RightB(varLogo, lngLogoSize - _ 
            lngOffset),conChunkSize)
          rstPubInfo!logo.AppendChunk varChunk
          lngOffset = lngOffset + conChunkSize
       Loop   rstPubInfo.Update   ' Show the newly added data.
       MsgBox "New record: " & rstPubInfo!pub_id & vbCr & _ 
         "Description: " & rstPubInfo!pr_info & vbCr & _ 
         "Logo size: " & rstPubInfo!logo.ActualSize   rstPubInfo.Close
       cn.CloseEnd Sub
      

  5.   

    给一个绝对没错的!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 pic", iConc, 1, 3
            .AddNew         '新增一条记录
            .Fields("img") = iStm.Read
            .Update
       End With    
        '完成后关闭对象    iRe.Close    iStm.CloseEnd SubSub s_ReadFile()    Dim iStm As ADODB.Stream    Dim iRe As ADODB.Recordset      '打开表Set iRe = New ADODB.Recordset'得到最新添加的纪录    iRe.Open "select top 1 * from pic order by id desc", iConc, adOpenKeyset, adLockReadOnly        '保存到文件    Set iStm = New ADODB.Stream    With iStm        .Mode = adModeReadWrite        .Type = adTypeBinary        .Open        .Write iRe("img")'这里注意了,如果当前目录下存在test1.jpg,会报一个文件写入失败的错误.        .SaveToFile App.Path & "\test1.jpg"    End With       Image1.Picture = LoadPicture(App.Path & "\test1.jpg")    '关闭对象    iRe.Close    iStm.CloseEnd Sub 
    Private Sub Command1_Click()Call s_ReadFileEnd Sub Private Sub Command2_Click()Call s_SaveFileEnd Sub Private Sub Form_Load() '下面的语句是连接sqlserver数据库的.    iConcstr = "DSN=pic;UID=sa;PWD=sa;"    Set iConc = New ADODB.Connection    iConc.Open iConcstr
    End Sub 
    Private Sub Form_Unload(Cancel As Integer)iConc.CloseSet iConc = NothingEnd Sub