最近做JSP,需要在数据库里面插入图片,再读出来,目前遇到些问题,求教!!!   1.放图片的时候,放什么数据类型,varchar?
   2.貌似图片存入数据库是以二进制数据流存入,读图片的时候再以数据流读出,求具体代码。

解决方案 »

  1.   

    数据库类型是Image类型,给你贴VB代码吧。
    '保存图片到数据库中(利用数据流)
    Public Sub SaveImageToDB(ByRef fld As ADODB.Field, file As String)
        Dim c As New ADODB.Stream
        
        On Error GoTo ErrSave
        '如果文件不存在,则不用保存
        If FileExists(file) = False Then Exit Sub
        '利用数据流保存到数据库中
        c.Mode = adModeReadWrite
        c.Type = adTypeBinary
        c.Open
        c.LoadFromFile file
        fld.Value = c.Read()
        c.Close
        Exit Sub
    ErrSave:
        If Err.Number <> 0 Then
            MsgBox Err.Number & ";" & Err.Description, vbInformation + vbOKOnly, "存储图片"
        End If
    End SubPublic Sub LoadImageFromDB(ByVal fld As ADODB.Field, objPic As Object)
        Dim c As New ADODB.Stream
        Dim strFile As String
        
        On Error GoTo errLoad
        '如果图片内容为空
        If IsNull(fld.Value) Then
            objPic.Picture = LoadPicture("")
            Exit Sub
        End If
        '开始从数据库中读取图片
        c.Mode = adModeReadWrite
        c.Type = adTypeBinary
        c.Open
        c.Write (fld.Value)
        '生成临时文件路径
        strFile = g_WinDir & "\Temp"
        Call fCreateDir(strFile)
        strFile = strFile & "\~" & GetString(False) & ".tmp"
        If FileExists(strFile) Then Kill (strFile)
        c.SaveToFile strFile, adSaveCreateOverWrite
        objPic.Picture = LoadPicture(strFile)
        '删除临时文件
        Kill strFile
        Exit Sub
    errLoad:
        If Err.Number = 481 Then
            Set objPic.Picture = LoadPicture("")
        Else
            If Err.Number <> 0 Then
                MsgBox Err.Number & ";" & Err.Description, vbInformation + vbOKOnly, "加载图片"
            End If
        End If
    End Sub
      

  2.   

    如果用SQLSERVER2008的话,FILESTREAM功能是专门在数据库里存取流媒体格式的,包括图片在内,比较方便。