第一次写,根据别人的提示,经过一天的努力(我比较笨,你也许一会就搞定了),终于完成了这个功能. 写出来,一是备忘,二是希望能帮助更多的人,让需要的人不再走弯路.
方法还在完善更新中,请高手们跟帖补充,谢谢.
把本地图片存入数据库: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