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

2016-02-19 12:52 13 1 收藏

在这个颜值当道,屌丝闪边的时代,拼不过颜值拼内涵,只有知识丰富才能提升一个人的内在气质和修养,所谓人丑就要多学习,今天图老师给大家分享在VB中存取数据库中的图片,希望可以对大家能有小小的帮助。

【 tulaoshi.com - 编程语言 】

  一、数据库的设计

  数据库可以采用微软的Access97或者SQLServer来进行,首先新建一张表,取名为Table,添加三个字段,分别是:姓名Char型(SQLServer中)文本型(Access中);编号Char型(SQLServer中)文本型(Access中);照片image型(SQLServer中)OLE对象(Access中),设计好后存盘。为了可以进行远程调用,我们采用ODBC的方法进行,双击打开控制面板里的ODBC数据源,界面如图1所示:
  点“系统DSN”选项卡,按“添加”按钮选择对应的数据源驱动程序Access的*.mdb或者SQLServer,依照添加向导加添加数据源,下面就可以开始程序的编写了。

  二、程序的编写

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)  运行VB,新建一个工程。本程序采用ADO控件和动态链接库访问数据库,需要加入ADO的运行库,单击“工程引用”菜单,出现引用对话框,选择MicrosoftActiveXDataObjects2.0Library并确定。
  添加一个Form,四个Label控件,两个TextBox控件,一个PictureBox控件,一个ADODC控件,三个CommandButton控件,一个CommandDialog控件,如果ADODC和CommandDialog控件没有出现在工具框上,请单击菜单“工程部件”。点“控件”选项卡,在其中选中MicrosoftADODataControl6.0(OLEDB)和MicrosoftCommonDialogControl6.0两项按“确定”按钮。
  下面是以上各个控件的一些属性:
  Form1.MaxButton=False
  Label1.Caption=姓名:
  Label2.Caption=编号:
  Label3.Name=ResName
  Label3.BackColor=&H80000009&
  Label3.BorderStyle=1-FixedSingle
  Label3.DataField=姓名
  Label3.DataSource=AdoCtr
  Label4.Name=ResNumb
  Label4.BackColor=&H80000009&
  Label4.BorderStyle=1-FixedSingle
  Label4.DataField=编号
  Label4.DataSource=AdoCtr
  Text1.Name=Names
  Text2.Name=Numb
  CommonDialog1.Name=CDlg
  Adodc1.Name=AdoCtr
  CommonButton1.Name=PreView
  CommonButton1.Caption=预览
  CommonButton2.Name=Save
  CommonButton2.Caption=保存
  CommonButton3.Name=Update
  CommonButton3.Caption=更新
  PictureBox1.Name=PicBox
  PictureBox1.AutoSize=False
  PictureBox1.AutoRedraw=False
  PictureBox1.DataField=照片
  PictureBox1.DataSource=AdpCtr
  下面是程序代码:
  ′此工程需有MicrosoftActiveXDataObject2.1Library(msado15.dll)
  DimConstrAsString′ODBC路径
  DimFileNameAsString′图片文件名
  ConstBLOCKSIZE=4096′每次读写块的大小
  DimADOConAsNewADODB.Connection′ADODBConnection对象
  DimADORstAsNewADODB.Recordset′ADODBRecordset对象
  DimADOFldAsADODB.Field′ADODBField对象
  ------------------------
  PrivateSubSaveToDB(ByRefFldAsADODB.Field,DiskFileAsString)
  DimbyteData()AsByte′定义数据块数组
  DimNumBlocksAsLong′定义数据块个数
  DimFileLengthAsLong′标识文件长度
  DimLeftOverAsLong′定义剩余字节长度
  DimSourceFileAsLong′定义自由文件号
  DimiAsLong′定义循环变量
  SourceFile=FreeFile′提供一个尚未使用的文件号
  OpenDiskFileForBinaryAccessReadAsSourceFile′打开文件
  FileLength=LOF(SourceFile)′得到文件长度
  IfFileLength=0Then′判断文件是否存在
  CloseSourceFile
  MsgBoxDiskFile&″无内容或不存在!″
  Else
  NumBlocks=FileLengthBLOCKSIZE′得到数据块的个数
  LeftOver=FileLengthModBLOCKSIZE′得到剩余字节数
  Fld.Value=Null
  ReDimbyteData(BLOCKSIZE)′重新定义数据块的大小
  Fori=1ToNumBlocks
  GetSourceFile,,byteData()′读到内存块中
  Fld.AppendChunkbyteData()′写入FLD
  Nexti
  ReDimbyteData(LeftOver)′重新定义数据块的大小
  GetSourceFile,,byteData()′读到内存块中
  Fld.AppendChunkbyteData()′写入FLD
  CloseSourceFile′关闭源文件
  EndIf
  EndSub
  ----------------------
  PrivateSubForm_Load()
  Constr=″DSN=image″′定义ODBC连接
  ADOCon.OpenConstr′创建一个连接
  ADORst.Open″table″,ADOCon,adOpenDynamic,adLockOptimistic
  ′打开一个ADO动态集表名为table
  SetAdoCtr.Recordset=ADORst′将动态集赋给ADO控件
  EndSub
  ----------------------
  PrivateSubForm_Unload(CancelAsInteger)
  ′记得关闭打开的数据集,释放资源
  ADORst.Close
  ADOCon.Close
  SetADORst=Nothing
  SetADOCon=Nothing
  EndSub
  ----------------------
  PrivateSubPreView_Click()
  ′显示打开文件的公用对话框,选择需要加入数据库的图片
  CDlg.Filter=″位图(*.bmp)|*.bmp″
  CDlg.ShowOpen
  FileName=CDlg.FileName
  PicBox.Picture=LoadPicture(FileName)′预览图片
  EndSub
  ----------------------
  PrivateSubSave_Click()
  ADORst.AddNew′新增纪录
  ADORst(″姓名″).Value=Names.Text′给动态集的第一个字段赋值
  ADORst(″编号″).Value=Numb.Text′给动态集的第二个字段赋值
  SetADOFld=ADORst(″照片″)′给ADODB.Field对象赋值
  CallSaveToDB(ADOFld,FileName)′调用子程序,给第三个字段(image)赋值
  ADORst.Update
  EndSub
  ----------------------
  PrivateSubUpdate_Click()
  ′重新打开纪录集,刷新纪录
  ADORst.Close
  ADOCon.Close
  SetADORst=Nothing
  SetADOCon=Nothing
  ADOCon.OpenConstr
  ADORst.Open″table″,ADOCon,adOpenDynamic,adLockOptimistic
  SetAdoCtr.Recordset=ADORst
  EndSub
  程序运行后的结果如图2。
  本程序在VB6.0/Windows98/WindowsNT下编译通过。->

来源:https://www.tulaoshi.com/n/20160219/1602249.html

延伸阅读
In an ASP+ page ,databases can be accessed by employing ADO+ objects. In order to retrieve values from databases through ADO+ we have to follow certain procedures which are different from those employed in ADO. The article throws Light on Various steps involved in using ADO+ in an ASP page for retrieving the datab...
在Internet上运作数据库经常会有这样的需求:把遍布全国各城市相似的数据库应用统一起来,一个节点的数据改变不仅体现在本地,还反映到远端。复制技术给用户提供了一种快速访问共享数据的办法。 一、实现数据库复制的前提条件 1、数据库支持高级复制功能 您可以用system身份登录数据库,查看v$option视图,如果其中Advanced...
在使用以前版本的VisualBasic(或简称VB)开发应用程序时,程序开发人员通常需要同时打开两个应用程序——VisualBasic和一个数据库管理程序(例如Access)。现在,这些本来应该由数据库设计人员完成的任务已经成为VisualBasic集成环境的一个部分,而且,在设计完成上述任务时,VB6.0提供的一些数据工具在某些方面比数据库本身提供的工具还要好用...
----在VB5.0中,用MicrosoftJet数据库引擎和数据访问对象DAO(DataAccessObject)可以创建功能强大的客户/服务器应用程序。对远程数据库的访问是开发这类应用程序的关键环节,本文将介绍在VB5.0中用DAO通过MiscrosoftJet数据库引擎访问远程数据库的方法。 ----用DAO访问远程数据库大体上可以通过三步来实现,即数据连接、数据处理和断...
----在VB5.0中,用MicrosoftJet数据库引擎和数据访问对象DAO(DataAccessObject)可以创建功能强大的客户/服务器应用程序。对远程数据库的访问是开发这类应用程序的关键环节,本文将介绍在VB5.0中用DAO通过MiscrosoftJet数据库引擎访问远程数据库的方法。 ----用DAO访问远程数据库大体上可以通过三步来实现,即数据连接、数据处理和断...

经验教程

682

收藏

82
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部