VB6.0中存取数据库中图片的方法

合集下载

VB中用数据库存取图片的实现

VB中用数据库存取图片的实现

VB中用数据库存取图片的实现摘要:VB 数据库中图像数据的存取对初学者来说是个难点,本文利用ADO 对象的AppendChunk 和GetChunk 方法来实现数据库存取图片,以供初学者参考。

关键字:VB;数据库;图片;存取;AppendChunk ;GetChunk图像数据的存取对初学者来说是个难点,而当前的VB 教学因课时较短,所选教材或讲授过程对数据库一章要么忽略要么只是简单地介绍,很少涉及到图像的存取问题,而专业数据库开发书籍中的大量源代码又让初学者看得头疼,所以本文利用ADO 对象的AppendChunk 和GetChunk 方法来实现数据库存取图片,以供参考。

一、界面设计在Form1中添加控件1个PictureBox(名称为picture1),1个TextBox(名称为txtfilepath),1个CommonDialog(名称为cmdlFilePath),7个CommandButton(名称分别为cmdBrowse、cmdSave、cmdExit、cmdFirst、cmdPrev、cmdNext和cmdLast),整体界面如下图所示:主界面示意图二、编程思路利用Access创建一个数据库命名为image,在image数据库中创建一个数据表imagestore,在imagestore数据表中创建srno和picimage两个字段,其中srno字段类型为自动编号,picimage字段类型为OLE对象。

在程序中点击cmdBrowse按钮打开CommonDialog,选择要插入的图片,选中后该图片的路径在txtfilepath中显示,点击保存按钮后图片被保存进image.mdb,同时在picture1中显示图片。

保存多个图片后可利用cmdFirst、cmdPrev、cmdNext和cmdLast按钮进行浏览。

三、代码实现1、声明常量和变量:Dim cnnImage As New ADODB.ConnectionDim rsImage As New ADODB.RecordsetDim strSql As StringDim Chunk() As ByteDim lngLengh As LongDim intChunks As IntegerDim intFragment As IntegerConst ChunkSize = 1000Const lngDataFile = 12、窗体的FormLoad事件代码:Private Sub Form_Load()rsImage.LockType = adLockOptimisticrsImage.CursorType = adOpenKeysetcnnImage.Provider = "Microsoft.Jet.OLEDB.4.0"strSql = App.Path & "\Image.mdb"cnnImage.Open strSqlstrSql = "Select * From ImageStore"rsImage.Open strSql, cnnImageIf (rsImage.BOF = True) And (rsImage.EOF = True) Then Exit SubCall cmdFirst_ClickEnd Sub主要利用ADO对象建立程序与数据库的链接。

在数据库中存取图片的方法技巧

在数据库中存取图片的方法技巧

18科技资讯 SC I EN C E & TE C HN O LO G Y I NF O R MA T IO N信 息 技 术图像数据的存取对初学者来说是个难点,而当前的VB教学因课时较短,所选教材或讲授过程对数据库一章要么忽略要么只是简单地介绍,很少涉及到图像的存取问题,而专业数据库开发书籍中的大量源代码又让初学者看得头疼,所以本文总结了3种相对简便的方法以供参考。

1 利用VB内部控件绑定图片1.1实现思路用户添加或修改图片时控制使用CO M M O N D I A L O G 的S H O W O P E N 对话框,然后记录通用对话框的FIL ENAM E到变量A,再使用APP.PAT H找到到特定目录下的该图片文件,改变窗体上放置图片控件的属性即可显示。

1.2实现方法(1)在窗体上建立I M A G E 控件,名为I M A G E 1。

(2)用DATA控件得到数据源表。

(3)建立“更改图片”按钮COMMA ND1,其代码为:Private Sub Command1_Click()CommonDialog1.FileName=""CommonDialog1.Filter="文件bmp*.bmp文件JPG*.JPG文件GIF*.GIF"CommonDialog1.ShowOpen Dim a As Stringa=CommonDialog1.FileTitle 注释:得到不含路径文件名If a<> "" ThenImage11.Picture = LoadPicture(App.Path amp; "\bmp\" amp; a)注释:\bmp\是我用于存取图片的本系统文件夹下的一个子文件夹。

Data1.Recordset.EditData1.Recordset.Fields("tp")=a注释:TP 是存取图片名称的字段。

高中信息技术教学论文用vb6.0的data控件存取数据库图片的新方法

高中信息技术教学论文用vb6.0的data控件存取数据库图片的新方法

用VB6.0的Data控件存取数据库图片的新方法摘要:介绍了VB6中Data控件建立数据库的方法以及如何使用独特的方法实现对图像数据的显示和查询。

关键词:Data控件; 数据库; 图像数据1 建立Access关系型数据库:随着计算机技术的发展,数据库越来越显示出其强大的数据存储和数据管理功能。

为了满足人们对数据库的需要,Visual Basic提供了强大的数据库的程序设计功能。

虽然VB并不是专用与数据库开发的软件系统,但它所提供的数据库功能却几乎可以满足所有编程人员的需求。

在Visual Basic环境下,Access数据库是缺省数据库,Access所采用的Jet数据库引擎得到了最有效的利用。

例如Visual Basic的内部数据访问控件(Data)就是建立在Jet引擎基础上的。

数据库是一组特定数据的集合,是提供数据的基地。

它能保存数据并允许用户访问所需的数据。

数据库保存的数据都是相关数据,为了便于保管和处理这些数据,将这些数据存入数据库时必须具有一定的数据结构和文件组织方式。

数据库中的数据集合组成特定的表,表中的每一列为一个字段,每一行为一个记录。

其中表是按行与列排列来表示相关信息的逻辑组。

Jet数据库引擎包含在一组动态链接库(DLL)中,运行时,这些动态链接库文件被链接到Visual Basic程序。

它把应用程序的请求翻译成对.mdb文件或其他数据库的物理操作。

数据库引擎真正读取、写入和修改数据库,并处理数据库中所有内部事物。

在Access数据库系统中,信息以数据库为单位存储到存储介质如磁盘、光盘中。

其扩展名为mdb。

2 Data控件2.1 Data控件的内涵Data控件是Visual Basic和数据库之间的联接桥梁。

通过Data控件可以不用编写代码而创建简单的数据库,存取数据。

此外,也可把Data控件和Visual Basic代码结合起来创建完整功能的应用程序,为数据处理提供高级的编程控制。

用VB存取SQLServer2000数据库中图片文件的方法

用VB存取SQLServer2000数据库中图片文件的方法

科技信息1.引言在数据库应用系统开发中,经常要对大容量的图片进行存取,如在档案管理系统中存取人员的照片。

而S Q L S e r v e r2000不支持INS ER T和U PD A T E语句对im a g e数据类型字段进行编辑,因此需编写专门过程来处理图像字段。

笔者结合自己的实际应用,给出了实现此功能的方法,愿与同仁共享。

2.S Q L S e r ve r2000中图像数据的存储机制在S Q L S e r v e r2000数据库中,对于小于8000个字节的图像数据可以采用二进制型(B i n a r y、V a r b i n a r y)来表示,但通常要保存的图片一般都大于8000个字节。

S Q L S e r v e r提供了一种机制,能存储每行大到2G的二进制对象(B L O B),这类对象可包括im a g e、t e x t和n t e x t三种数据类型,其中im a g e数据类型存储的是二进制数据。

V B6.0存取S Q L S e r v e r中B L O B数据有两种方法。

一是利用A D O F i e l d对象的A pp en d C h u n k和G e t C h u n k方法。

二是利用S t r e a m对象的L o a d F r om F il e和S a v e T o F il e方法。

为了更好说明这两种方法,本示例程序存储图片采用A D O F i e l d 对象的A pp en d C h u n k方法,而读取图片采用S t r e a m对象的S a v e T o F il e方法。

3.示例实现步骤及代码①在S Q L S e r v e r2000中创建数据库D A G L。

在D A G L中创建表S t u d en t,包括s t u_n o(c h a r型,存放学号)、s t u_n a m e(c h a r 型,存放姓名)、s t u_p h o t o(im a g e型,存放照片)三个字段。

用VB6读写数据库中的图片

用VB6读写数据库中的图片
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long,
ByVal lpBuffer As String) As Long
Private Const MAX_PATH = 260
picPerson.Visible = False
Screen.MousePointer = vbHourglass
DoEvents
注释: Get the record.
Set rs = m_DBConn.Execute("SELECT * FROM People WHERE Name=注释:" & _
cdlOFNFileMustExist Or _
cdlOFNHideReadOnly Or _
cdlOFNExplorer
dlgPicture.CancelError = True
dlgPicture.Filter = "Graphics Files|*.bmp;*.ico;*.jpg;*.gif"
" selecting file." & vbCrLf & Err.Description
Exit Sub
End If
注释: Open the picture file.
file_num = FreeFile
Open dlgPicture.FileName For Binary Access Read As #file_num
Get #file_num, , bytes()

关于VB 与Access 中图片的存取问题

关于VB 与Access 中图片的存取问题

关于VB 与Access 中图片的存取问题作者:钱晓燕来源:《中国信息技术教育》2014年第22期摘要:在数据库应用系统中,经常需要对图片进行处理,包括图片在数据库中的直接存储和只将图片地址存储于数据库中两种存储方式。

本文主要论述了图片的存储方式、读取方式,它们各自的优缺点以及怎样存取才能达到效率最高。

关键词:移植性数据负担 OlE 对象图片地址中图分类号:G718 ; ; ; 文献标识码:A 文章编号:1674-2117(2014)22-00-01在教学中,我们常常会用VB及Access做些小的数据库应用系统,如学籍管理系统、考试系统、图书管理系统等,在这些数据库应用系统中,经常需要对图片进行处理。

图片在数据库中应该如何存取、怎样存取才能达到效率最高,是我们最常碰到又急需解决的问题。

1 图片在数据库中的存储以考试管理系统为例来说,在考试报名界面上必须有考试照片,而这照片必须存入后台数据库中。

图书管理系统新书入库时需将新书封面图片存入数据库等。

一般来说,图片在数据库中的存储有两种方式:直接将图片存储在数据库中和在数据库中存储图片地址。

1.1 直接将图片存储在数据库这种存储方式采用的是数据流技术。

数据库设计时,存储图片的字段数据类型定义为“OLE对象”。

要插入图片直接双击该字段即可。

若要在程序中写入数据库,实现代码如下:SUB ;SFILE()DIM ;STR ;As ADODB.STREAMDIM ;REAS ADODB.RECORDSETDIM ;STR ;AS STRINGSET ;STM = NEW ADODB.STREAMSTM.TYPE= ADTYPEBINARYSTM.OPENSTM.LOADFROMFILE APP.PATH+”\ABC.JPG”SET ;RE= NEW ADODB.RECORDESETRE.OPEN”SELECT * ;FROM ;IMG” ,STM,1,3RE.ADDNEWRE.FIELDS(“PHOTO”)=STM.READRE.UPDATERE.CLOSESTM.CLOSEEND SUB从代码看图片操作与其他字段写入数据库基本一样,只不过使用的是流对象。

Visual Basic 6.0中存取数据库图像的方法

Visual Basic 6.0中存取数据库图像的方法
比如 Pcu e o i rB x控件 、m g t I a e控 件等 . 介绍实 现 的步骤 : 现 表 1 m g0 表的结构 I ae1
1 由于是采 用 Daa控 件编 写 , 以数 据库 的创 建只 能采 用 ) t 所
Viu l ai 的 可 视 化 数 据 管 理 器 ( s aa 来 建 立. 开 s a B sc中 Vi t ) D 打
件 的箭头 按钮 即可 对数 据库 中 图像 进行 浏览 .
2 利 用 Ap e d h n 编 写代 码 实现 图像 的存 储 p n C u k,
像 、 音 和 视 频 等 多 种 媒 体 信 息. 章 以 Viu lB sc 6 0结 合 Ac e s 0 0 比 较 系 统 地 讨 论 了 利 声 文 s a a i . cs 2 0 ,
用 Daa 控 件 、 t ADo 对 象 和 S r a 对 象 进 行 存 取 数 据 库 图 像 的 三 种 方 法 , 对 A Do 对 象 和 te m 并
T be Src o ae1 al 1 t t fm g0 u i
Vi a B s 6 0 单击 【 接程序 】 【 视化 数 据管 理 器 】 项 , s l ai . , u c 外 一 可 选 打 开“ s aa 窗 口. 其 中新建 一 个数 据 库 , Vi t” D 在 名称 为 “ il , pc ” 在 数据 库 中建 一个 表 , 名称 为“ma e 1 . i g 0 ” 表的结 构如 表 1所示 .
维普资讯
第 5卷
第 3 期
太 原 师 范 学 院 学 报 ( 然 科 学 ) 自
J URN F T Y O AL O AI UAN NO M AL UNI R I Y ( a u a S i c dt n R VE S T N t rl c n eE i o ) e i

vb6中如何将数据库中的图片数据直接显示在picture或者image控件中

vb6中如何将数据库中的图片数据直接显示在picture或者image控件中

vb6中如何将数据库中的图片数据直接显示在picture 或者image 控件中Visual Basic code?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 '新增图片Dim Bag As PropertyBagDim buff() As ByteDim cn As ADODB.ConnectionDim rs As ADODB.RecordsetSet Bag = New PropertyBagBag.WriteProperty "Image", Picture1.Image ReDim buff(LenB(Bag.Contents))buff = Bag.ContentsSet cn = ConnectionToDBSet rs = New ADODB.Recordsetrs.Open "select img from tb_image where 1=0", _ cn, adOpenKeyset, adLockOptimistic rs.AddNewrs.Fields("img") = buffrs.UpdateSet rs = NothingSet cn = NothingSet Bag = Nothing'读出图片Dim cn As ADODB.ConnectionDim rs As ADODB.RecordsetDim Bag As PropertyBagDim buff() As ByteSet cn = ConnectionToDBSet rs = New ADODB.Recordsetrs.Open "Select * From tb_image Where ID=100", _ cn, adOpenKeyset, adLockOptimisticbuff = rs.Fields("Img").ValueSet Bag = New PropertyBagBag.Contents = buffCall Bag.WriteProperty("Image", buff)Set Picture1.Picture = Bag.ReadProperty("Image") Set rs = Nothing404142 Set cn = NothingSet Bag = Nothing'===================================================== ===================================' 文件名称: Form1.frm' 作者: lyserver' 日期: 2008年5月24日3:52' 功能: 直接显示数据库中的二进制图像数据'===================================================== ===================================Option ExplicitPrivate Declare Function GetDC Lib "user32" (ByV al hwnd As Long) As LongPrivate Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As LongPrivate Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth AsLong, ByVal nHeight As Long) As LongPrivate Declare Function SelectObject Lib "gdi32"(ByVal hdc As Long, ByVal hObject As Long) A s LongPrivate Declare Function BitBlt Lib "gdi32" (ByV al hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeightAs Long, ByVal hSrcDC As Long, ByVal xSrc AsLong, ByVal ySrc As Long, ByVal dwRop As Long) As LongPrivate Declare Function GetBitmapBits Lib "gdi32 " (ByVal hBitmap As Long, ByVal dwCount As Lon g, lpBits As Any) As LongPrivate Declare Function GetObject Lib "gdi32" A lias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As LongPrivate Declare Function DeleteObject Lib "gdi32"(ByVal hObject As Long) As LongPrivate Declare Function DeleteDC Lib "gdi32" (B yVal hdc As Long) As LongPrivate Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Lo ngPrivate Declare Function SetBitmapBits Lib "gdi32 " (ByVal hBitmap As Long, ByVal dwCount As Lon g, lpBits As Any) As LongPrivate Sub Command1_Click()Dim DB As ObjectDim RS As ObjectDim Bits() As ByteDim nCount As Long'打开数据库和数据表Set DB = CreateObject("ADODB.Connection")DB.Open "Provider=Microsoft.Jet.OLEDB.4.0;Dat a Source=c:\temp.mdb"Set RS = DB.Execute("SELECT * FROM 图像表")'获得图像二进制nCount = LenB(RS.Fields("图像字段").Value)Bits = RS.Fields("图像字段").GetChunk(nCount)'显示图像SetBitmapBits Me.Image, nCount, Bits(0)Me.Refresh'关闭数据表和数据库RS.CloseDB.Close'释放资源Erase BitsSet RS = NothingSet DB = NothingEnd SubPrivate Sub Form_Initialize()'由于没有源数据,所以我先写了一个把屏幕图像抓取到ACCESS数据库的函数CatchScreenToMDBEnd Sub'抓取屏幕图像并保存到ACCESS数据库中Public Function CatchScreenToMDB()Dim hMemoryDC As LongDim hScreenDC As LongDim hMemoryBitmap As LongDim hPrevMemoryBitmap As LongDim ScreenWidth As LongDim ScreenHeight As LongDim Bits() As ByteDim BitmapInfo(1 To 6) As LongDim AdoxCat As ObjectDim AdodbCn As ObjectDim AdodbRs As ObjectDim strDatabase As String'取屏幕高宽ScreenWidth = Screen.Width \ 15ScreenHeight = Screen.Height \ 15'准备内存DC和内存位图hScreenDC = GetDC(0)hMemoryDC = CreateCompatibleDC(0&)hMemoryBitmap = CreateCompatibleBitmap(hScre enDC, ScreenWidth, ScreenHeight)hPrevMemoryBitmap = SelectObject(hMemoryDC, hMemoryBitmap)'复制屏幕图像到二进制数组中BitBlt hMemoryDC, 0, 0, ScreenWidth, Scre enHeight, hScreenDC, 0, 0, vbSrcCopyReDim Bits(0 To ScreenWidth * ScreenHeigh t * 4) '下标必须为0,以便ADO能正确保存Call GetBitmapBits(hMemoryBitmap, UBound(Bits) + 1, Bits(0))'将图数据保存到数据库中strDatabase = "C:\TEMP.MDB"If Len(Dir(strDatabase)) > 0 Then Kill s trDatabaseSet AdoxCat = CreateObject("ADOX.Catalog")AdoxCat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDatabase '创建数据库Set AdodbCn = CreateObject("ADODB.Connectio n")AdodbCn.Open "Provider=Microsoft.Jet.OLEDB.4. 0;Data Source=" & strDatabase '打开数据库AdodbCn.Execute "CREATE TABLE 图像表(图像字段IMAGE)" '创建数据表Set AdodbRs = CreateObject("ADODB.Recordset ")AdodbRs.Open "图像表", AdodbCn, 1, 3AdodbRs.AddNewAdodbRs.Fields("图像字段").AppendChunk BitsAdodbRs.UpdateAdodbRs.CloseAdodbCn.Close'释放资源DeleteObject SelectObject(hMemoryDC, hPrevMe moryBitmap)DeleteDC hMemoryDCReleaseDC 0, hScreenDCErase BitsSet AdodbRs = NothingSet AdodbCn = NothingSet AdoxCat = NothingEnd Function回复于: 2008-05-24 04:19:28 #15 得分:5对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理调试环境:winxp sp2 ,SQL SERVER 2000.'加载图片Private Function JiaZai()Dim RS As ADODB.RecordsetSet RS = New ADODB.RecordsetDim GCONN As ADODB.ConnectionSet GCONN = New ADODB.ConnectionGCONN.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=xlwwgly;InitialCatalog=wwdb;Data Source= 127.0.0.1", "sa","sa"'============================Dim Bag As PropertyBagDim buff() As ByteDim BagObj As Object'============================RS.Open "select * from Tab_Files where filename="'aa.jpg'", GCONN, adOpenStatic, adLockPessimisticbuff = RS.Fields("FileContent").ValueSet Bag = New PropertyBagBag.Contents = buffCall Bag.WriteProperty("ImageE", buff)Debug.Print LenB(Bag.ReadProperty("Imag eE"))Set Picture1.Picture = NothingSet Picture1.Picture = Bag.ReadProper ty("ImageE", vbNullString) '调试的时候这里就要出错的。

在VB中存取数据库中的图片

在VB中存取数据库中的图片

在VB中存取数据库中的图片一、数据库的设计数据库可以采用微软的Access97或者SQL Server来进行,首先新建一张表,取名为Table,添加三个字段,分别是:姓名Char型(SQL Server中)文本型(Access中);编号Char型(SQL Server中)文本型(Access中);照片image型(SQL Server中)OLE对象(Access中),设计好后存盘。

为了可以进行远程调用,我们采用ODBC的方法进行,双击打开控制面板里的ODBC数据源,点“系统DSN”选项卡,按“添加”按钮选择对应的数据源驱动程序Access的*.mdb或者SQL Server,依照添加向导加添加数据源,下面就可以开始程序的编写了。

二、程序的编写运行VB,新建一个工程。

本程序采用ADO控件和动态链接库访问数据库,需要加入ADO的运行库,单击“工程\引用”菜单,出现引用对话框,选择Microsoft ActiveX Data Objects2.0 Library并确定。

添加一个Form,四个Label控件,两个TextBox控件,一个PictureBox控件,一个ADODC 控件,三个CommandButton控件,一个CommandDialog控件,如果ADODC和CommandDialog控件没有出现在工具框上,请单击菜单“工程\部件”。

点“控件”选项卡,在其中选中Microsoft ADO Data Control 6.0(OLEDB)和Microsoft Common Dialog Control 6.0两项按“确定”按钮。

下面是以上各个控件的一些属性:Form1.MaxButton=FalseLabel1.Caption=姓名:Label2.Caption=编号:= ResNameLabel3.BackColor= &H80000009&Label3.BorderStyle=1-Fixed SingleLabel3.DataField=姓名Label3.DataSource= AdoCtr= ResNumbLabel4.BackColor= &H80000009&Label4.BorderStyle=1-Fixed SingleLabel4.DataField=编号Label4.DataSource= AdoCtr= Names= Numb= CDlg=AdoCtr=PreViewCommonButton1.Caption=预览=SaveCommonButton2.Caption=保存= UpdateCommonButton3.Caption=更新= PicBoxPictureBox1.AutoSize=FalsePictureBox1.AutoRedraw=FalsePictureBox1.DataField=照片PictureBox1.DataSource=AdpCtr下面是程序代码:′此工程需有Microsoft ActiveX Data Object 2.1 Library(msado15.dll)Dim Constr As String ′ODBC路径Dim FileName As String ′图片文件名Const BLOCKSIZE = 4096 ′每次读写块的大小Dim ADOCon As New ADODB.Connection ′ADODB Connection对象Dim ADORst As New ADODB.Recordset ′ADODB Recordset 对象Dim ADOFld As ADODB.Field ′ADODB Field 对象------------------------Private Sub SaveToDB(ByRef Fld As ADODB.Field, DiskFile As String)Dim byteData() As Byte ′定义数据块数组Dim NumBlocks As Long ′定义数据块个数Dim FileLength As Long ′标识文件长度Dim LeftOver As Long′定义剩余字节长度Dim SourceFile As Long ′定义自由文件号Dim i As Long ′定义循环变量SourceFile = FreeFile ′提供一个尚未使用的文件号Open DiskFile For Binary Access Read As SourceFile ′打开文件FileLength = LOF(SourceFile) ′得到文件长度If FileLength = 0 Then ′判断文件是否存在Close SourceFileMsgBox DiskFile &〃无内容或不存在!〃ElseNumBlocks = FileLength \ BLOCKSIZE ′得到数据块的个数LeftOver = FileLength Mod BLOCKSIZE ′得到剩余字节数Fld.Value = NullReDim byteData(BLOCKSIZE) ′重新定义数据块的大小For i = 1 To NumBlocksGet SourceFile, , byteData() ′读到内存块中Fld.AppendChunk byteData() ′写入FLDNext iReDim byteData(LeftOver) ′重新定义数据块的大小Get SourceFile, , byteData() ′读到内存块中Fld.AppendChunk byteData() ′写入FLDClose SourceFile ′关闭源文件End IfEnd Sub----------------------Private Sub Form_Load()Constr = 〃DSN=image〃′定义ODBC连接ADOCon.Open Constr ′创建一个连接ADORst.Open 〃table〃, ADOCon, adOpenDynamic, adLockOptimistic ′打开一个ADO动态集表名为tableSet AdoCtr.Recordset = ADORst ′将动态集赋给ADO控件End Sub----------------------Private Sub Form_Unload(Cancel As Integer)′记得关闭打开的数据集,释放资源ADORst.CloseADOCon.CloseSet ADORst = NothingSet ADOCon = NothingEnd Sub----------------------Private Sub PreView_Click()′显示打开文件的公用对话框,选择需要加入数据库的图片CDlg.Filter = 〃位图(*.bmp)|*.bmp〃CDlg.ShowOpenFileName = CDlg.FileNamePicBox.Picture = LoadPicture(FileName) ′预览图片End Sub----------------------Private Sub Save_Click()ADORst.AddNew ′新增纪录ADORst(〃姓名〃).Value = Names.Text ′给动态集的第一个字段赋值ADORst(〃编号〃).Value = Numb.Text ′给动态集的第二个字段赋值Set ADOFld = ADORst(〃照片〃) ′给ADODB.Field对象赋值Call SaveToDB(ADOFld, FileName)′调用子程序,给第三个字段(image)赋值ADORst.UpdateEnd Sub----------------------Private Sub Update_Click()′重新打开纪录集,刷新纪录ADORst.CloseADOCon.CloseSet ADORst = NothingSet ADOCon = NothingADOCon.Open ConstrADORst.Open 〃table〃, ADOCon, adOpenDynamic, adLockOptimistic Set AdoCtr.Recordset = ADORstEnd Sub。

简谈VB中用数据库存取图片的简便方法

简谈VB中用数据库存取图片的简便方法

简谈VB中用数据库存取图片的简便方法摘要:VB数据库中图像数据的存取对初学者来说是个难点,文章总结了绑定图片控件、存储图片文件路径、利用PropertyBag对象与Byte数组中转三种较为简便的方法以供初学者参考。

关键词:VB;Data控件;数据库;图片;存取;路径;PropertyBag;Byte 数组图像数据的存取对初学者来说是个难点,而当前的VB教学因课时较短,所选教材或讲授过程对数据库一章要么忽略要么只是简单地介绍,很少涉及到图像的存取问题,而专业数据库开发书籍中的大量源代码又让初学者看得头疼,所以本文总结了3种相对简便的方法以供参考。

为顺利运行程序,以下每种方法中,图片文件夹和数据库文件、VB程序文件同时存储在同一目录下。

1绑定图片控件实现思路:用VB自带VisData建立数据库,把图片存储在数据库表的Binary 字段中,通过常用工具箱中Data控件与Image控件绑定,添加CommonDialog 部件用以选择图片文件,在Image的DblClick事件中打开通用对话框,用LoadPicture函数把选定的图片载入Image,用Data控件的四个箭头浏览记录。

1.1建立图片文件夹建立图片文件夹bmp,把准备好的图片(本例选用bmp、jpg、gif格式)放入其中,以备程序运行时添加和修改用。

1.2建立数据库启动外接程序下的可视化数据管理器VisData,建立stu数据库,新建xs表,包含学号、姓名、照片(类型Binary)3个字段。

因Binary型字段在表中无法直接操作,所以生成表后并不需添加记录,等程序运行时添加即可。

1.3界面设计在窗体上添加2个标签、2个文本框,2个命令按钮,1个Data控件,1个图像框,1个CommonDialog控件;设置图像框的BodyStyle属性为1,Stretch 属性设置为True;设置Data控件DataBaseName属性为stu.mdb,RecordSource 属性为xs,设置Textl、Text2的DataSource属性Datal,Textl的DataField属性为姓名,Text2的DataField属性为学号:标签与命令按钮属性设置如图1所示。

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

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

VB6 保存和读取图片到数据库dim stm as ADODB.Streamdim rs as ADODB.Recordsetsub SavePictureToDB(cn As ADODB.Connection) '将图片存入数据库On Error GoTo EHSet stm = New ADODB.Streamrs.Open "select ImagePath,ImageValue from tbl_Image", cn, adOpenKeyset, adLockOptimisticCommonDialog1.ShowOpenText1.Text = CommonDialog1.FileNameWith stm.Type = adTypeBinary.Open.LoadFromFileCommonDialog1.FileNameEnd WithWith rs.AddNew.Fields("ImagePath") =Text1.Text.Fields("ImageValue") =stm.Read.UpdateEnd Withrs.CloseSet rs = NothingExit SubEH: MsgBox Err.Description, vbInformation, "Error"End SubSub LoadPictureFromDB(cn AsADODB.Connection)'载数据库中读出图片On Error GoTo EHDim strTemp As StringSet stm = New ADODB.StreamstrTemp = "c:/temp.tmp" '临时文件,用来保存读出的图片rs.Open "select ImagePath,ImageValue from tbl_image", cn, , , adCmdTextWith stm.Type = adTypeBinary.Open.Write rs("ImageValue").SaveToFile strTemp, adSaveCreateOverWrite.CloseEnd WithImage1.Picture = LoadPicture(strTemp)Set stm = Nothingrs.CloseSet rs = NothingExit SubEH: MsgBox Err.Description, vbInformation, "Error"End Sub也可用FileSystemObject的方式来保存Dim Sql As StringDim fs As New FileSystemObjectSub SavePicture()Dim sByte() As ByteDim bIsNull As BooleanIf fs.FileExists(g_FilePath) ThenOpen g_FilePath For Binary Access Read As #1ReDim sByte(1 To LOF(1))Get #1, 1, sByte()Close #1bIsNull = FalseElsebIsNull = TrueEnd IfDim rs As New ADODB.Recordsetrs.Open "select empid,empname,pic from emp where empid = '" &amp; Trim(txtEmpId.Text) &amp; "'", cn, adOpenStatic, adLockOptimisticrs.AddNewrs!EmpId = txtEmpId.Textrs!EmpName = txtEmpName.TextIf bIsNull &lt;&gt; True Thenrs!pic = sByteEnd Ifrs.UpdateMsgBox "save data ok!"txtEmpId.Text = ""txtEmpName.Text = ""Set picView.Picture = NothingcmdAdd.Enabled = TrueEnd SubSub viewJpg()Dim TmpFile As StringDim jByte() As ByteSql = "select * from emp"Set rsViewJpg = New ADODB.RecordsetrsViewJpg.Open Sql, cn, adOpenStatic, adLockOptimisticrsViewJpg.MoveFirstIf Not rsViewJpg.BOF ThenIf Not rsViewJpg.EOF ThentxtEmpId.Text = rsViewJpg!EmpIdtxtEmpName.Text = rsViewJpg!EmpNameSet pic.Picture = NothingIf Not fs.FolderExists(App.Path + "/temp") Thenfs.CreateFolder (App.Path + "/temp")End IfTmpFile = App.Path + "/Temp/" + rsViewJpg.Fields(0) + ".jpg"If Not IsNull(rsViewJpg!pic) ThenjByte = rsViewJpg!picOpen TmpFile For Binary Access Write As #1Put #1, , jByteClose #1pic.Picture = LoadPicture(TmpFile)End IfEnd IfEnd IfEnd Sub。

Vb6.0调用数据库中的图片

Vb6.0调用数据库中的图片

Jj = +1
I =D ml f J a
E)t u 【Sb i
ห้องสมุดไป่ตู้
E dI n f
oj t来绑定,主要用于网络编程 ,D t b c) es a a使用 D t a nm a bs a e a e 方法, a 使用 O edt a 方法 , d 使用 O ecm ef n Do pna bs a e Ro pno m co i 方法,d 使用 C netntn 方法。 Ao oncosi i rg 其三是利用控制面板中的O b( dc 开放的数据库链接)其特 , 点是可以使用数据库的类型丰富。如 vpOal等。 r re , c
由于 V 默认数据 库引擎是 J , b e 直接与 A cs进行链接 , t ces 本文重点介绍与它的链接问题与实现方法。
Pi tS b o m n2 Ci ( ‘ r a m ad lk) 用于依次显示数据库的记 ve u C c 录 t i 字段 ua pn
S i As n g r mf ci I t e e
宋连友 ,王晓玲
( 沧州师专 计算机系 ,河北 师专 0 10 ) 60 1

要:讨论了在 v 60中调用 Acs 数据库的方法, k " aa b. ces 4 ̄i Dt 控件和 Ao X ' 对编写数据库程序 d 的I ̄ , 1
具有一定意义
关键词 :v 6 0 a a d ;O b b .;D t ;A o d c
S t A t e tij sne r a c I g
Co mmo Dilg1FlNa n ao .i e m ̄
22 A c u2 0 中 .在 c e 0 0
在 A cs 00中自带为 J 4 ces 0 2 e. t 0,只提供 A o接 口,不 d 提供 D o接 口,使用 A o控件 ,并使用”Mioo e a d c sf J r t t Oeb. 提供者即可, l 4” d 0 并且用 Oe l对象控件, 而不能用 iae m g

如何用VB存取SQL Server中的图像数据.

如何用VB存取SQL Server中的图像数据.

摘要本文介绍MIS SQL Server对图像数据的存储机制和存取方法。

针对VB开发工具,介绍了一种通过ADO Field 对象的GetChunk 方法和AppendChunk 方法来存取MIS SQL Server中的图像数据的方法。

关键词ADO Field对象BLOB 对象GetChunk和AppendChunk 方法image数据类型医院信息系统MIS SQL Server在一个完善的医院信息MIS中,图像数据的存取是必不可少的,比如X光片、CT像片的保存。

一方面,这些图像数据在远程诊疗为准确诊断病情提供了重要的依据,另一方面,也为快速查阅病人资料提供了基本条件。

图像数据的存取在其它应用系统如GIS中也有广泛的应用。

1、SQL Server中图像数据的存储机制在MIS SQL Server 中,对于小于8000 个字节的图像数据可以用二进制型(binary、varbinary)来表示。

但通常要保存的一些医学影像图片都会大于8000个字节。

SQL Server提供了一种机制,能存储每行大到2G 的二进制对象(BLOB),这类对象可包括image、text和ntext三种数据类型。

Image数据类型存储的是二进制数据,最大长度是231-1 (2,147,483,647)个字节[2][3]。

BLOB数据在MIS SQL Server系统中的存储方式不同于普通的数据类型,对于普通类型的数据系统直接在用户定义的字段上存储数据值,而对于BLOB类型数据,系统开辟新的存储页面来存放这些数据,表中BLOB类型数据字段存放的仅是一个16个字节的指针,该指针指向存放该条记录的BLOB数据的页面。

2、SQL Server中图像数据的存取在MIS SQL Server中,当数据小于8000 个字节时,可以用普通的SQL操纵语句(SELECT、INSERT、UPDATE、DELETE)来完成对字段的操纵,当数据大于8000个字节时,SQL提供了WRITETEXT 、READTEXT和UPDATETEXT这三个函数来读取和修改数据。

VB多类图片数据库存取技巧

VB多类图片数据库存取技巧

如果只是表情图片,没必要写入数据库。

存到服务器硬盘上就行了。

如果非要存入数据库,可以转换成二进制字节流再写入数据库。

发贴时图片是如何显示的,直接看一下页面的源文件就知道了。

你把它们的名字和路径存到数据库中!再从数据库中读取它的路径和名不可以吗?已用Access建立好数据库,存放图片的字段采用"OLE对象",现在的问题是如何在程序中将图片存入该字段。

'将图片存入数据库'首先将文件读入一字节数组' Dim bit() As Byte' Open "C:\WINDOWS\安装程序.bmp" For Binary As #1' ReDim bit(LOF(1)) As Byte' Get 1, 1, bit' Close 1'然后将字节数组的内容写入数据库即可Dim cnn As New ADODB.Connection, rst As New ADODB.Record setcnn.Open "Provider=SQLOLEDB.1;Password=test;Persist Security Info=True;U ser ID=test;Initial Catalog=pubs;Data Source=DB1\SQL1"rst.Open "T1", cnn, adOpenKeyset, adLockOptimisticrst.AddNewrst("F1").AppendChunk bitrst.Update'将数据库中的图片读出'首先将数据库中的内容读到一字节数组Dim bit1() As Bytebit1 = rst("F1").GetChunk(rst("F1").ActualSize)'然后将字节数组的内容拼装成文件即可Open "c:\1.bmp" For Binary As #1Put 1, 1, bit1Close 1' Me.Picture = LoadPicture("c:\1.bmp")将图片直接存入Access数据库适用于图片较少的情况,因为Access数据库文件不能超过100M,当图片较多时,宜采用只将图片路径存入数据库的方法。

VB6.0存取数据库图像字段的方法

VB6.0存取数据库图像字段的方法

VB6.0存取数据库图像字段的方法
包怀忠
【期刊名称】《智能计算机与应用》
【年(卷),期】2002(000)001
【摘要】介绍利用VB6.0提供的ADO Data Control控件存取数据库的图像字段的方法.
【总页数】2页(P23-24)
【作者】包怀忠
【作者单位】安徽财贸学院计算机科学与技术系,蚌埠233041
【正文语种】中文
【中图分类】TP31
【相关文献】
1.用VB6.0存取SQL Server 2000数据库中图像数据的方法 [J], 罗兴荣
2.VC++6.0读写Access数据库中图像字段的方法研究 [J], 万为清
3.用ADO技术实现数据库图像字段的存取 [J], 古凌岚
4.基于PB数据库图像字段数据存取与图像显示研究 [J], 郭新顺
5.VB
6.0中存取数据库中图片的方法 [J], 王军
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
③在ADoDc控件的“属性页”中选取“记录源”选项卡,然后
阶№妯^“虹‰k()
0n
Error
从“命令类型”下拉列表中选取“2一adcmdr圳e”选项,接着从“表
或存储过程名称”下拉列表中选取数据表“存取相片”。
④双击工具箱中的口(PichlMBox),则在表单窗体中出现Pic- tu陀控件,将该控件命名为PictuMl,PictIlrel的Datnsour∞属性设
本文链接:/Periodical_dnkfyyy200207026.aspx
0;P啪istSecIld竹in如=Fal能;
Dahs0IIm“^doder’
na曲eId=“相片”
1数据库的创建
数据库采用微软的Acce8s97,首先新建一张表.取名为“存取 相片”,潦加三个字段,分别是:姓名,文本型;编号,文本型;相片, OIE对象。设计好之后存盘命名为Piclure
mdb。 souIce^s sllb
SH代Pictm卅川0de
EⅡdIf
EndWith
End sIlb
3解决的方法 新增一个“通用模块”(方法是选取vB菜单的“工程-+添加模
块”),然后在该模块中输入以下程序代码:
Addpic—chck事件程序利用“载人图片”对话框来选取图象文 件,并且将新的图片写入到数据库中。
以上代码在vB6.0/windows98/w‰NT环境中已调试通
co衄衄Di出og控件,将该控件命名为com脚nDial嘴1。co衄on_
Dialog控件的用途是选取图象文件。 表单窗体中各控件的名称和有关属性如表1所示,控件的其 它属性取默认值或自行设定,表单窗体的菜单也可以根据需要自 行设置。
Pictu托=【mdPicm陀(.FileN蛐e) Adodel.Recm硼5m..FikN唧c
入到数据库中。 在^ddpic—click事件程序中调用s且vcPictu咒TOAdodc于程 序,编写的程序代码如下:
属性”对话框。完成以上设置后.在ADODc属性窗体中的c。n鹏c-
non蹦ng属性。内容为“Pro讪r=Micm疵mOLEDR4.0;P岫igb Secll工i岫面=眦BData sou地e=c“Picture mdb”,
“下一步”按钮。进入“连接”选项卡。在“选择或输入数据库名称”输入
框的右侧单击目按钮,从“选择^co曲s数据库”对话框的列表中,选取 新建的数据库PicturB ndb。最后单击“打开”按钮,返回到1徽据链接
上面的轴vePichudoAdodc子程序主要是读取图象文件,然
后利用R即∞d8et对象的^ppe。“huIIl【方法把图象文件的内容写
Con眦ctionStdng
主要属性
2“PI。v讨盯=Mi啪∞n.Jd
^dodcl
0U£DB.4
tu陀控件中的图片时,PictuM拉件会自动地把该图片保存到数据 库中。但是现在这个方法却不适用于vB6.0的ADODc控件。笔 者经过长时间的研究终于找到了解决问题的方法。
Picห้องสมุดไป่ตู้u北
Pic№l
D_阻舢啪c“Pjctmmdb”. Re∞一轴u…“存取相片”。
Wilh
C㈣Did091
Re咖e
N饯t
.Did讲ine=‘载人固片”
Fil№=”(点阵图)・.bmp+.bn旷
C址cdErmr=1he .ShoW0*n ⅡEmNumb盯o cdlC如cd Ttl蛐
S科Pictu弛l
置为AdodcI。Pi咖∞I的D址aField属性设置为“相片”。 ⑤双击工具箱中的口(commonDi山E),则在表单窗体中出现
Decl啪sllb RtlMoveMen・唧Lib乍ERNEL32。(1pvDen^B
A“y,
lpp
过。
万 方数据
VB6.0中存取数据库中图片的方法
作者: 作者单位: 刊名: 英文刊名: 年,卷(期): 王军 辽宁省图书馆 电脑开发与应用 COMPUTER DEVELOPMENT & APPLICATIONS 2002,15(7)
属性”命令,接着在‘‘属性页”的“通用”选项卡中选取“使用连接字符
Gel蝇.bA∞2
Clo鸵#l
串”选项,然后单击“生成”按钮。在‘驾螺链接属性”对话框中,从“oLE
RtlM删eMe肿叮b^my(8).bA嗍y2(0).hn呼h
m(。相片。).^ppendChunk bAn吖
EⅡd Sub
DB提供者”列表中选取“Micro曲Jel4.O 0LE DB P阳vid盱”,然后单击
L蝉tll^●hm目f^BInteg叫
bA”v(Lc嚼h+12)^a Byte,b^my2{I朋曲)如Byte
Leng由;nkkn(FjleN^me)
ReDim
co咖l
6.0(sP4) (O【正DB)”和“Microson
bA啊y(0)=&H6c|b抽y(1)=&H74
目&MQveMef∞ry f=FreeFik
Any,ByV柚cbcoPy如k“g)
s且vePietu矾Adodc(玛Aa
ADODB.Re∞rd辩t.BYVd FileName
As
s曲IIg)
Dim
2设计窗体界面 ①启动vB6 o,选“标准ExE”创建新工程,在ⅢE环境中,选
取菜单的“工程_+部件”命令,在弹出的“控件”对话框时,选取
“Micr硼。矗ADO D砒a
vis叫Basic语言以其方便、快捷、功能强大而倍受众多编程
爱好者的喜爱,尤其是其ADODc控件可以实现对本地、远程数据 控件类型
裹l
控件名称
各控件的名称殛一性
库进行管理。笔者在编制人员数据库管理系统时发现:在vB5之
前的版本中.更改数据库中的图片是根简单的事情,当改变Pic.
ADODC
co㈣蜘=“2一adcmdT铀lc”
c帆mon Di山s cont珊16.0”,按确定按钮后,开发环境的工具箱中
b^rmy‘4),L啪d出,4
将出现口(ADODc)控件和口(com啪nDialog)控件,双击ADODc,
则在表单窗体中出现ADODc控件。将该控件命名为Adodcl。
0p曲F曲N帅efh Bin町As#f
②用鼠标右键单击ADODc,在出现的快捷菜单中选取“ADODc
相关文档
最新文档