国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

在VB中存取數據庫中的圖片

2019-11-18 17:46:26
字體:
來源:轉載
供稿:網友
  一、數據庫的設計

  數據庫可以采用微軟的access97或者SQLServer來進行,首先新建一張表,取名為Table,添加三個字段,分別是:姓名Char型(SQLServer中)文本型(Access中);編號Char型(SQLServer中)文本型(Access中);照片image型(SQLServer中)OLE對象(Access中),設計好后存盤。為了可以進行遠程調用,我們采用ODBC的方法進行,雙擊打開控制面板里的ODBC數據源,界面如圖1所示:
  點“系統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=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=FileLength/BLOCKSIZE′得到數據塊的個數
  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下編譯通過。->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广水市| 准格尔旗| 永善县| 孝义市| 嵩明县| 正镶白旗| 泽州县| 宜州市| 望谟县| 交口县| 夏津县| 栾川县| 巴青县| 崇左市| 江山市| 兴安盟| 衡山县| 清丰县| 保德县| 白山市| 武川县| 木兰县| 吉木萨尔县| 光山县| 泰州市| 仁寿县| 法库县| 文登市| 长武县| 德化县| 乐都县| 景谷| 台州市| 利辛县| 南城县| 淮安市| 淳化县| 福建省| 六安市| 无锡市| 阳西县|