关于图片保存到SQL数据库及从数据库读出显示在PictureBox中.

来源:互联网 发布:小猪cms o2o 源码 编辑:程序博客网 时间:2024/05/01 22:36

        第一次写,根据别人的提示,经过一天的努力(我比较笨,你也许一会就搞定了),终于完成了这个功能. 写出来,一是备忘,二是希望能帮助更多的人,让需要的人不再走弯路.

        方法还在完善更新中,请高手们跟帖补充,谢谢.

把本地图片存入数据库:MSSQL ,数据类型是Image,

        Dim obj As New ClaOptDatabase     '自定义的数据库操作类,没有什么特别的.就是SQLClient
        Dim bit1() As Byte                 '定义一个二进制数组,用来存放图片
        Dim nLen As Long                '定义长度,用来得到图片大小
        Dim tStream As New FileIO.FileSystem       '定义文件系统,用来读取图片
        Dim tIoStream As New IO.FileStream("C:/RS-Dessert.gif", IO.FileMode.Open, IO.FileAccess.Read) '读取图片,图片名为:C:/RS-Dessert.gif
        Dim tIoBReader As New IO.BinaryReader(tIoStream)    '把图片数据读取成二进制.
        Dim tIoFileInfo As New IO.FileInfo("C:/RS-Dessert.gif")  '得到图片文件信息,如大小等.
        nLen = tIoFileInfo.Length
        ReDim bit1(nLen)
        tIoBReader.Read(bit1, 0, nLen)    '把图片二进制数据读取到Bit1

        Dim sql As String               
        sql = "select * from  tb_test where id=15"

        '以下是利用Ds更新数据库

        Try
            Dim ds As New DataSet
            obj.SelectDs(sql, ds, "TestPic")
            If ds.Tables("TestPic").Rows.Count > 0 Then
                Dim tRow As DataRow
                tRow = ds.Tables("TestPic").Rows(0)
                tRow.Item(2) = bit1
                obj.UpdateDs(sql, ds, "TestPic")

            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

'------------图片上传到数据库结束.----------------------

以下是图片从数据库中读出,显示到PictureBox或保存到本地磁盘.

        Dim sql As String
        Dim obj As New ClaOptDatabase                     '同上,
        sql = "select * from  tb_test where id=15"
        Dim bit1() As Byte                                                 '同上
        Dim nLen As Long                                               '同上
        Try
            Dim dr As SqlClient.SqlDataReader
            dr = obj.ExecSqlReader(sql)
            If dr.Read Then
                Dim myImg As Image                               '定义一个Image

                nLen = 4000                                               '这里应该得到数据库字段的长度,我这里没有完成,只是写了个固定值.有待于完善
                ReDim bit1(nLen)                                      '预设一个和文件大小一样的二进制内存空间
                bit1 = dr.Item("Picbit")                               '把图片数据放入二进制内存空间中.

                Dim mySysStream As New IO.MemoryStream(bit1)      '把图片读取到内存数据流中.

                myImg = Image.FromStream(mySysStream)           ,从内存数据流中为Image填充数据
                MyPicBox.Image = myImg                                             '把Image给PictureBox赋值.显示出来.
                myImg.Save("C:/123.gif")                                              '把Image里的图片保存到本地磁盘.
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

原创粉丝点击