在VB中,如何上传图片到数据库?

在VB中,如何上传图片到数据库?,第1张

图片是可以存储到数据库中的,只是把它转化成二进制数据保存进去。但是这样的方式,将会使得数据库异常庞大。占用数据库资源。所以并不是主流的存储方式。

通常我们存储图片进入数据库的做法是,保存一个地址给数据库,而图片是采用别的方法存储到服务器磁盘中的。

比如,使用FTP方式将图片保存到服务器D:\PIC文件夹。在服务器数据库中只要记录D:\PIC\1.JPG。那么读取图片的时候数据库中读取图片文件名或地址,那么就可以在FTP中取得。

VB6 保存和读取图片到数据库

dim stm as ADODB.Stream

dim rs as ADODB.Recordset

sub SavePictureToDB(cn As ADODB.Connection)

'将图片存入数据库

On Error GoTo EH

Set stm = New ADODB.Stream

rs.Open "select ImagePath,ImageValue from tbl_Image", cn, adOpenKeyset, adLockOptimistic

CommonDialog1.ShowOpen

Text1.Text = CommonDialog1.FileName

With stm

.Type = adTypeBinary

.Open

.LoadFromFile CommonDialog1.FileName

End With

With rs

.AddNew

.Fields("ImagePath") = Text1.Text

.Fields("ImageValue") = stm.Read

.Update

End With

rs.Close

Set rs = Nothing

Exit Sub

EH: MsgBox Err.Description, vbInformation, "Error"

End Sub

Sub LoadPictureFromDB(cn As ADODB.Connection)

'载数据库中读出图片

On Error GoTo EH

Dim strTemp As String

Set stm = New ADODB.Stream

strTemp = "c:/temp.tmp" '临时文件,用来保存读出的图片

rs.Open "select ImagePath,ImageValue from tbl_image", cn, , , adCmdText

With stm

.Type = adTypeBinary

.Open

.Write rs("ImageValue")

.SaveToFile strTemp, adSaveCreateOverWrite

.Close

End With

Image1.Picture = LoadPicture(strTemp)

Set stm = Nothing

rs.Close

Set rs = Nothing

Exit Sub

EH: MsgBox Err.Description, vbInformation, "Error"

End Sub

也可用FileSystemObject的方式来保存

Dim Sql As String

Dim fs As New FileSystemObject

Sub SavePicture()

Dim sByte() As Byte

Dim bIsNull As Boolean

If fs.FileExists(g_FilePath) Then

Open g_FilePath For Binary Access Read As #1

ReDim sByte(1 To LOF(1))

Get #1, 1, sByte()

Close #1

bIsNull = False

Else

bIsNull = True

End If

Dim rs As New ADODB.Recordset

rs.Open "select empid,empname,pic from emp where empid = '" &Trim(txtEmpId.Text) &"'", cn, adOpenStatic, adLockOptimistic

rs.AddNew

rs!EmpId = txtEmpId.Text

rs!EmpName = txtEmpName.Text

If bIsNull <>True Then

rs!pic = sByte

End If

rs.Update

MsgBox "save data ok!"

txtEmpId.Text = ""

txtEmpName.Text = ""

Set picView.Picture = Nothing

cmdAdd.Enabled = True

End Sub

Sub viewJpg()

Dim TmpFile As String

Dim jByte() As Byte

Sql = "select * from emp"

Set rsViewJpg = New ADODB.Recordset

rsViewJpg.Open Sql, cn, adOpenStatic, adLockOptimistic

rsViewJpg.MoveFirst

If Not rsViewJpg.BOF Then

If Not rsViewJpg.EOF Then

txtEmpId.Text = rsViewJpg!EmpId

txtEmpName.Text = rsViewJpg!EmpName

Set pic.Picture = Nothing

If Not fs.FolderExists(App.Path + "/temp") Then

fs.CreateFolder (App.Path + "/temp")

End If

TmpFile = App.Path + "/Temp/" + rsViewJpg.Fields(0) + ".jpg"

If Not IsNull(rsViewJpg!pic) Then

jByte = rsViewJpg!pic

Open TmpFile For Binary Access Write As #1

Put #1, , jByte

Close #1

pic.Picture = LoadPicture(TmpFile)

End If

End If

End If

End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10046549.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存