日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
VB中實(shí)現(xiàn)數(shù)據(jù)庫圖片存儲(chǔ)的方法解析(vb中如何向數(shù)據(jù)庫中存儲(chǔ)圖片)

在使用VB進(jìn)行開發(fā)的時(shí)候,經(jīng)常會(huì)涉及到圖片的存儲(chǔ)和展示。而如果需要將圖片存儲(chǔ)到數(shù)據(jù)庫中,可能會(huì)比較困難,因?yàn)閳D片的數(shù)據(jù)較大,需要轉(zhuǎn)換成二進(jìn)制再進(jìn)行存儲(chǔ)。本文將為大家介紹如何使用VB實(shí)現(xiàn)數(shù)據(jù)庫圖片存儲(chǔ)的方法。

創(chuàng)新互聯(lián)公司主要從事做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)繁峙,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220

1. 圖片格式轉(zhuǎn)換

在將圖片存儲(chǔ)到數(shù)據(jù)庫中之前,我們需要將它轉(zhuǎn)換成二進(jìn)制格式。在VB中,我們可以使用FileSystemObject對象讀取圖片文件,再使用ADODB.Stream對象將它轉(zhuǎn)換成二進(jìn)制格式。具體代碼如下:

“`

Dim fs As New FileSystemObject

Dim stream As New ADODB.Stream

stream.Type = adTypeBinary

stream.Open

stream.LoadFromFile “C:\image.png”

Dim byteStream() As Byte

byteStream = stream.Read()

“`

這段代碼首先創(chuàng)建一個(gè)FileSystemObject對象,用于讀取文件。接著,創(chuàng)建一個(gè)ADODB.Stream對象,指定它的類型為adTypeBinary,打開并從文件中讀取圖片。將轉(zhuǎn)換后的二進(jìn)制數(shù)據(jù)存儲(chǔ)在byteStream數(shù)組中。

2. 數(shù)據(jù)庫表的設(shè)計(jì)

在將圖片存儲(chǔ)到數(shù)據(jù)庫中之前,我們需要設(shè)計(jì)一個(gè)表用于存儲(chǔ)它。一般來說,這個(gè)表需要包含以下幾個(gè)字段:

– Id:圖片的ID,類型為整數(shù),用于唯一標(biāo)識(shí)一張圖片。

– Name:圖片的名稱,類型為字符串,用于描述圖片的內(nèi)容或者作用。

– Type:圖片的類型,類型為字符串,用于記錄圖片的格式,例如jpeg、png等。

– Data:圖片的數(shù)據(jù),類型為二進(jìn)制,用于存儲(chǔ)圖片的內(nèi)容。

具體的SQL語句如下:

“`

CREATE TABLE Images (

Id INTEGER PRIMARY KEY,

Name TEXT,

Type TEXT,

Data BLOB

);

“`

在這個(gè)表中,我們將使用數(shù)據(jù)類型為BLOB的字段來存儲(chǔ)圖片的二進(jìn)制數(shù)據(jù)。

3. 將圖片存儲(chǔ)到數(shù)據(jù)庫中

當(dāng)我們有了轉(zhuǎn)換后的二進(jìn)制數(shù)據(jù)和數(shù)據(jù)庫表之后,就可以將圖片存儲(chǔ)到數(shù)據(jù)庫中了。在VB中,我們可以使用ADODB.Connection對象連接數(shù)據(jù)庫,再使用ADODB.Command對象執(zhí)行SQL語句,將二進(jìn)制數(shù)據(jù)存儲(chǔ)到表中。具體代碼如下:

“`

Dim conn As New ADODB.Connection

Dim cmd As New ADODB.Command

conn.ConnectionString = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\database.mdb;”

conn.Open

cmd.ActiveConnection = conn

cmd.CommandText = “INSERT INTO Images (Name, Type, Data) VALUES (?, ?, ?);”

cmd.Parameters.Append cmd.CreateParameter(“Name”, adVarChar, adParamInput, Len(imageName), imageName)

cmd.Parameters.Append cmd.CreateParameter(“Type”, adVarChar, adParamInput, Len(imageType), imageType)

cmd.Parameters.Append cmd.CreateParameter(“Data”, adBinary, adParamInput, UBound(byteStream) – LBound(byteStream) + 1, byteStream)

cmd.Execute

conn.Close

“`

這段代碼首先創(chuàng)建一個(gè)ADODB.Connection對象,用于連接數(shù)據(jù)庫。接著,創(chuàng)建一個(gè)ADODB.Command對象,指定它的ActiveConnection為conn,CommandText為INSERT INTO Images (Name, Type, Data) VALUES (?, ?, ?);,使用CreateParameter方法創(chuàng)建三個(gè)參數(shù),分別對應(yīng)Name、Type和Data字段。用Execute方法將數(shù)據(jù)存儲(chǔ)到表中,再關(guān)閉連接。

4. 從數(shù)據(jù)庫中獲取圖片

在將圖片存儲(chǔ)到數(shù)據(jù)庫中之后,我們還需要從數(shù)據(jù)庫中獲取它并進(jìn)行展示。在VB中,我們可以使用ADODB.Recordset對象從表中讀取數(shù)據(jù),再使用PictureBox控件展示它。具體代碼如下:

“`

Dim rs As New ADODB.Recordset

rs.Open “SELECT * FROM Images WHERE Id = ” & imageId, conn, adOpenStatic, adLockOptimistic

If Not rs.EOF Then

Dim stream As New ADODB.Stream

stream.Type = adTypeBinary

stream.Open

stream.Write rs.Fields(“Data”).Value

stream.SaveToFile “C:\image.png”, adSaveCreateOverWrite

PictureBox1.Picture = LoadPicture(“C:\image.png”)

End If

rs.Close

“`

這段代碼首先創(chuàng)建一個(gè)ADODB.Recordset對象,使用Open方法執(zhí)行SQL語句(SELECT * FROM Images WHERE Id = ‘imageId’),讀取圖片數(shù)據(jù)。如果讀取到了數(shù)據(jù),就創(chuàng)建一個(gè)ADODB.Stream對象,寫入Data字段的值,再將它保存到本地文件。使用LoadPicture方法將圖片加載到PictureBox控件中展示。

由此可見,使用VB實(shí)現(xiàn)數(shù)據(jù)庫圖片存儲(chǔ)并不困難,只需要掌握相關(guān)的技術(shù)和方法即可。希望本文對您有所幫助。

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!

VB如何將一張網(wǎng)圖上的圖片寫入數(shù)據(jù)庫

dim aduSave as New ADODB.Recordset

aduSave.Open ” select Picture from tblBUltrasonicCheckPic where PersonID='” & txtInfo(0) & “‘ and ExamineID='” & strExamID & “‘ and PictureID=” & I, conn, adOpenDynamic, adLockBatchOptimistic

DoEvents

saveCPic(aduSave.Fields(“Picture”))

aduSave.UpdateBatch

Public Sub SavePic(adrPic As ADODB.field)

‘–保存圖像

On Error Resume Next

‘On Error GoTo err

Dim bytes() As Byte

Dim file_name As String

Dim file_num As Integer

Dim file_length As Long

Dim num_blocks As Long

Dim left_over As Long

Dim block_num As Long

file_num = FreeFile

Open “c:\photo_pic.jpg” For Binary Access Read As #file_num

file_length = LOF(file_num)

If file_length > 0 Then

num_blocks = file_length / BLOCK_SIZE

left_over = file_length Mod BLOCK_SIZE

ReDim bytes(BLOCK_SIZE)

For block_num = 1 To num_blocks

Get #file_num, , bytes()

adrPic.AppendChunk bytes()

Next block_num

If left_over > 0 Then

ReDim bytes(left_over)

Get #file_num, , bytes()

adrPic.AppendChunk bytes()

End If

Close #file_num

End If

DoEvents: DoEvents: DoEvents

On Error Resume Next

Kill “c:\photo_pic.jpg”

DoEvents

Exit Sub

err:

Debug.Print err.Description

End Sub

Public Sub showPic(ByVal Pic As ADODB.field)

‘–顯示圖像用

On Error Resume Next

Dim bytes() As Byte

Dim file_name As String

Dim file_num As Integer

Dim file_length As Long

Dim num_blocks As Long

Dim left_over As Long

Dim block_num As Long

Dim hgt As Single

DoEvents

file_num = FreeFile

Kill “c:\photo_pic.jpg”

DoEvents

Open “c:\photo_pic.jpg” For Binary As #file_num

file_length = Pic.ActualSize

num_blocks = file_length / BLOCK_SIZE

left_over = file_length Mod BLOCK_SIZE

For block_num = 1 To num_blocks

bytes() = Pic.GetChunk(BLOCK_SIZE)

Put #file_num, , bytes()

Next block_num

If left_over > 0 Then

bytes() = Pic.GetChunk(left_over)

Put #file_num, , bytes()

End If

Close #file_num

End Sub

用LoadPicture直接讀取某資料架圖片,并顯示在Image控件就可以了。

若直接將圖片存入資料庫將導(dǎo)致數(shù)據(jù)存取緩慢和增加資料庫容量。

比如:

Image1.Picture = LoadPicture(“e:\653\” & adotype.Recordset.Fields(“No”).value & “.jpg”)

*儲(chǔ)存圖片名字在資料庫的欄位中就可以了。

建議只存儲(chǔ)圖片的路徑,而且存儲(chǔ)相對路徑的話,在局域網(wǎng)內(nèi)也可以正常訪問,但要注意的是“不同操作系統(tǒng)的路徑表示方式不同”

但如果要把圖片存到數(shù)據(jù)庫中,好像只能用流來控制,存入還好,取出時(shí)有時(shí)會(huì)取不出來

可以的..讀取文件成為二進(jìn)制格式..然后寫入ACCESS..字段類型必須是二進(jìn)制的兼容格式~

不過一般不這樣做..不能提高速度..也增加服務(wù)器的負(fù)擔(dān)

VB如何拍照后自動(dòng)將圖片保存到數(shù)據(jù)庫

(1)你需要把Command1_Click里面的代碼單獨(dú)提出來寫成一個(gè)過程(或者函數(shù)),類似于這樣的形式:

Private Sub SavePicToDB(ByVal PicFilename as String)

‘這里面是你的代碼,直接復(fù)制進(jìn)來

‘需要稍做修改,把”C:\aa.JPG” 改為 PicFileName

End Sub

(2)然后在cmdStartPhoto_Click方法中,先加兩句:

Dim picFileName as String

picFileName = App.Path & “DataBase/PIctures” XXXXXXXXXXXXXXXXXXX ‘這里我不寫全了,你自己復(fù)制你那一長串代碼

SavePicture XXXXXXXX的行改為:

SavePicture picPhoto.Picture picFileName

并且在下一行加一句:

SavePicToDB(PicFilename)

vb中如何向數(shù)據(jù)庫中存儲(chǔ)圖片的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于vb中如何向數(shù)據(jù)庫中存儲(chǔ)圖片,VB中實(shí)現(xiàn)數(shù)據(jù)庫圖片存儲(chǔ)的方法解析,VB如何將一張網(wǎng)圖上的圖片寫入數(shù)據(jù)庫,VB如何拍照后自動(dòng)將圖片保存到數(shù)據(jù)庫的信息別忘了在本站進(jìn)行查找喔。

創(chuàng)新互聯(lián)-老牌IDC、云計(jì)算及IT信息化服務(wù)領(lǐng)域的服務(wù)供應(yīng)商,業(yè)務(wù)涵蓋IDC(互聯(lián)網(wǎng)數(shù)據(jù)中心)服務(wù)、云計(jì)算服務(wù)、IT信息化、AI算力租賃平臺(tái)(智算云),軟件開發(fā),網(wǎng)站建設(shè),咨詢熱線:028-86922220


分享題目:VB中實(shí)現(xiàn)數(shù)據(jù)庫圖片存儲(chǔ)的方法解析(vb中如何向數(shù)據(jù)庫中存儲(chǔ)圖片)
轉(zhuǎn)載源于:http://www.5511xx.com/article/djopeje.html