您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 电子商务 > 在VB中存取数据库中的图片
在VB中存取数据库中的图片一、数据库的设计数据库可以采用微软的Access97或者SQLServer来进行,首先新建一张表,取名为Table,添加三个字段,分别是:姓名Char型(SQLServer中)文本型(Access中);编号Char型(SQLServer中)文本型(Access中);照片image型(SQLServer中)OLE对象(Access中),设计好后存盘。为了可以进行远程调用,我们采用ODBC的方法进行,双击打开控制面板里的ODBC数据源,点“系统DSN”选项卡,按“添加”按钮选择对应的数据源驱动程序Access的*.mdb或者SQLServer,依照添加向导加添加数据源,下面就可以开始程序的编写了。二、程序的编写运行VB,新建一个工程。本程序采用ADO控件和动态链接库访问数据库,需要加入ADO的运行库,单击“工程\引用”菜单,出现引用对话框,选择MicrosoftActiveXDataObjects2.0Library并确定。添加一个Form,四个Label控件,两个TextBox控件,一个PictureBox控件,一个ADODC控件,三个CommandButton控件,一个CommandDialog控件,如果ADODC和CommandDialog控件没有出现在工具框上,请单击菜单“工程\部件”。点“控件”选项卡,在其中选中MicrosoftADODataControl6.0(OLEDB)和MicrosoftCommonDialogControl6.0两项按“确定”按钮。下面是以上各个控件的一些属性:Form1.MaxButton=FalseLabel1.Caption=姓名:Label2.Caption=编号:Label3.Name=ResNameLabel3.BackColor=&H80000009&Label3.BorderStyle=1-FixedSingleLabel3.DataField=姓名Label3.DataSource=AdoCtrLabel4.Name=ResNumbLabel4.BackColor=&H80000009&Label4.BorderStyle=1-FixedSingleLabel4.DataField=编号Label4.DataSource=AdoCtrText1.Name=NamesText2.Name=NumbCommonDialog1.Name=CDlgAdodc1.Name=AdoCtrCommonButton1.Name=PreViewCommonButton1.Caption=预览CommonButton2.Name=SaveCommonButton2.Caption=保存CommonButton3.Name=UpdateCommonButton3.Caption=更新PictureBox1.Name=PicBoxPictureBox1.AutoSize=FalsePictureBox1.AutoRedraw=FalsePictureBox1.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′判断文件是否存在CloseSourceFileMsgBoxDiskFile&〃无内容或不存在!〃ElseNumBlocks=FileLength\BLOCKSIZE′得到数据块的个数LeftOver=FileLengthModBLOCKSIZE′得到剩余字节数Fld.Value=NullReDimbyteData(BLOCKSIZE)′重新定义数据块的大小Fori=1ToNumBlocksGetSourceFile,,byteData()′读到内存块中Fld.AppendChunkbyteData()′写入FLDNextiReDimbyteData(LeftOver)′重新定义数据块的大小GetSourceFile,,byteData()′读到内存块中Fld.AppendChunkbyteData()′写入FLDCloseSourceFile′关闭源文件EndIfEndSub----------------------PrivateSubForm_Load()Constr=〃DSN=image〃′定义ODBC连接ADOCon.OpenConstr′创建一个连接ADORst.Open〃table〃,ADOCon,adOpenDynamic,adLockOptimistic′打开一个ADO动态集表名为tableSetAdoCtr.Recordset=ADORst′将动态集赋给ADO控件EndSub----------------------PrivateSubForm_Unload(CancelAsInteger)′记得关闭打开的数据集,释放资源ADORst.CloseADOCon.CloseSetADORst=NothingSetADOCon=NothingEndSub----------------------PrivateSubPreView_Click()′显示打开文件的公用对话框,选择需要加入数据库的图片CDlg.Filter=〃位图(*.bmp)|*.bmp〃CDlg.ShowOpenFileName=CDlg.FileNamePicBox.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.UpdateEndSub----------------------PrivateSubUpdate_Click()′重新打开纪录集,刷新纪录ADORst.CloseADOCon.CloseSetADORst=NothingSetADOCon=NothingADOCon.OpenConstrADORst.Open〃table〃,ADOCon,adOpenDynamic,adLockOptimisticSetAdoCtr.Recordset=ADORstEndSub
本文标题:在VB中存取数据库中的图片
链接地址:https://www.777doc.com/doc-2561511 .html