久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Visual Basic數(shù)據(jù)庫(kù)操作方法小結(jié)

 POTATO1990 2011-11-14

Visual Basic數(shù)據(jù)庫(kù)操作方法小結(jié)

http://tech.163.com/school · 2005-10-17 17:23:19 · 來(lái)源: 天極網(wǎng)

    筆者和同事們?cè)谑褂肰B對(duì)數(shù)據(jù)庫(kù)操作應(yīng)用時(shí),,總結(jié)了如下的幾種方法,,供初學(xué)者參考,希望能對(duì)大家有所啟發(fā),。

  1,、數(shù)據(jù)庫(kù)打開/關(guān)閉方法的選擇

  在通常情況下,數(shù)據(jù)庫(kù)的打開操作是在程序代碼中使用OpenDatabase方法實(shí)現(xiàn),,其格式如下:
Set database=workspace.OpenDatabase(dbname,options,readonly,connect)
可以通過(guò)指定數(shù)據(jù)庫(kù)名字,、打開方式、連接信息等參數(shù)打開一個(gè)現(xiàn)已存在的數(shù)據(jù)庫(kù),,使用Close方法即可關(guān)閉該數(shù)據(jù)庫(kù),。由于涉及VB代碼的編寫,其軟件編制工作比較復(fù)雜,。另一方面,,VB的數(shù)據(jù)控件(Data Control)也可以執(zhí)行數(shù)據(jù)庫(kù)的打用關(guān)閉操作。我們可以在數(shù)據(jù)控件的屬性窗口中預(yù)先填好數(shù)據(jù)庫(kù)打開的相關(guān)參數(shù),,一旦該數(shù)據(jù)控件啟動(dòng),,數(shù)據(jù)庫(kù)便會(huì)自動(dòng)以指定的方式打開,,而當(dāng)該數(shù)據(jù)控件終止時(shí),對(duì)應(yīng)的數(shù)據(jù)庫(kù)也將自動(dòng)關(guān)閉,。對(duì)于按這二種方式打開的數(shù)據(jù)庫(kù),,其后的數(shù)據(jù)庫(kù)訪問(wèn)操作沒有什么本質(zhì)的區(qū)別。

  以上兩種數(shù)據(jù)庫(kù)打用關(guān)閉的方法各有千秋:使用OpenDatabase方法可以在程序運(yùn)行中動(dòng)態(tài)地設(shè)置數(shù)據(jù)庫(kù)打開參數(shù),,并且可以多次以不同的方式打開和關(guān)閉同一個(gè)數(shù)據(jù)庫(kù),,具有相當(dāng)大的靈活性。而如果使用數(shù)據(jù)控件,,則不需要另外編寫VB代碼,,只要在程序編制時(shí)預(yù)先設(shè)置數(shù)據(jù)庫(kù)的相關(guān)參數(shù),程序開始運(yùn)行后便會(huì)自動(dòng)地以我們指定的方式打開數(shù)據(jù)庫(kù),,并在程序終止時(shí)自動(dòng)關(guān)閉該數(shù)據(jù)庫(kù),,因此顯得相當(dāng)方便。在實(shí)際應(yīng)用中,,可以視情況的不同而采用不同的處理方法:如果要求數(shù)據(jù)庫(kù)在程序運(yùn)行中始終處于打開狀態(tài)并且其打開方式保持不變(如一直處于只讀狀態(tài)),,那么,可以采用數(shù)據(jù)控件方法打開數(shù)據(jù)庫(kù),;如果要求數(shù)據(jù)庫(kù)在程序運(yùn)行中時(shí)而打開時(shí)而關(guān)閉,,或者經(jīng)常在只讀和讀寫方式間來(lái)回切換,則只能采用OpenDatabase方法編寫程序代碼,。

  
2,、通過(guò)相對(duì)路徑指定數(shù)據(jù)庫(kù)文件

  在很多情況下,不管采用上述哪一種方法打開數(shù)據(jù)庫(kù),,都必須在程序設(shè)計(jì)時(shí)就指定需要打開的數(shù)據(jù)庫(kù)文件,。但是,我們通常不能保證該軟件完成后一定會(huì)被安裝在每臺(tái)機(jī)器的同一目錄下,。因此該數(shù)據(jù)庫(kù)文件的絕對(duì)路徑一般在設(shè)計(jì)時(shí)還難以完全確定,,只能采用相對(duì)路徑的辦法來(lái)解決這個(gè)問(wèn)題。

  在VB中,,App對(duì)象是一個(gè)全局對(duì)象,,用來(lái)提供當(dāng)前應(yīng)用程序的相關(guān)信息,其Path屬性反映的是當(dāng)前應(yīng)用程序的可執(zhí)行文件(.exe)所在的絕對(duì)路徑,,并且只在程序運(yùn)行時(shí)才有效,。通過(guò)使用App對(duì)象的Path屬性,可以方便地獲得當(dāng)前程序所在的目錄路徑,。因此,,如果把數(shù)據(jù)庫(kù)文件存放在與程序路徑相關(guān)的目錄下,便可以在程序設(shè)計(jì)時(shí)就指定數(shù)據(jù)庫(kù)文件的相對(duì)路徑,當(dāng)程序運(yùn)行時(shí),,通過(guò)App對(duì)象的Path屬性動(dòng)態(tài)地獲取其絕對(duì)路徑,。
下面的一段代碼,用來(lái)在程序開始運(yùn)行時(shí)獲取程序的路徑,,并賦值給變量AppPath,,然后在數(shù)據(jù)控件Data1的Database Name屬性中與數(shù)據(jù)庫(kù)文件的相對(duì)路徑"Database\Sample.Mdb"結(jié)合,組成數(shù)據(jù)庫(kù)文件的絕對(duì)路徑,。這段代碼通常出現(xiàn)在Form-Load中:

Dim AppPath As String ' 設(shè)置路徑變量
AppPath=App.Path ' 獲取程序路徑
If Right(AppPath,1)<>"\"Then AppPath=AppPath+"\"
  ' 若路徑尾部沒有"\",,則添加之
  Data1.Database Name=AppPath+"Database\Sample.mdb"
  ' 與相對(duì)路徑結(jié)合,組成絕對(duì)路徑

    3,、用SQL語(yǔ)句完成數(shù)據(jù)庫(kù)操作

  SQL也就是結(jié)構(gòu)化查詢語(yǔ)言,,是用于數(shù)據(jù)庫(kù)查詢的一種通用標(biāo)準(zhǔn)語(yǔ)言,在現(xiàn)今的大多數(shù)數(shù)據(jù)庫(kù)軟件系統(tǒng)中均得到支持,。1句SQL語(yǔ)句通??梢酝瓿梢郧坝稍S多條語(yǔ)句才能完成的復(fù)雜的數(shù)據(jù)庫(kù)查詢操作,具有較高的工作效率,。

  在VB中,,SQL語(yǔ)句往往作為某些特定方法的參數(shù)而得以執(zhí)行(沒有FoxPro等數(shù)據(jù)庫(kù)軟件那樣直截了當(dāng)),比如可以把SQL語(yǔ)句作為Execute方法的1個(gè)字符串參數(shù)而執(zhí)行,,其格式如下:

object.Execute SQL-statement,options
  在其中的SQL-statement字符串中,,可以使用標(biāo)準(zhǔn)的SQL語(yǔ)句,如:SELECT,、INSERT,、DELETE及UPDATE等。下面的例子是在數(shù)據(jù)庫(kù)對(duì)象DB中執(zhí)行SQL語(yǔ)句,,從當(dāng)前數(shù)據(jù)庫(kù)的EMployees數(shù)據(jù)表中,選擇字段LastName='King'的所有記錄,,并將這些記錄的LastName和FirstName這2個(gè)字段的內(nèi)容,,保存到同一數(shù)據(jù)庫(kù)的Backup數(shù)據(jù)表中:

DB.Execute("SELECT LastName,FirstName INTO Backup FORM Employees
WHERE LastName='King';")

  
4、For語(yǔ)句在數(shù)據(jù)庫(kù)中的應(yīng)用

  For語(yǔ)句是幾乎所有高級(jí)語(yǔ)言都有的語(yǔ)句,,通常用來(lái)完成指定次數(shù)的循環(huán),,在循環(huán)中可以完成一些指定的工作。而在VB中,,F(xiàn)or語(yǔ)句還可以用來(lái)對(duì)某個(gè)集合中的每1個(gè)元素循環(huán)執(zhí)行若干操作,,而不必預(yù)先設(shè)定循環(huán)次數(shù),其格式如下:

For Each element In group
  [statements]
Next[element]

  For語(yǔ)句的這一特點(diǎn)可用于按照指定條件搜索整個(gè)數(shù)據(jù)庫(kù),。以下的代碼便可以對(duì)數(shù)據(jù)庫(kù)對(duì)象DB所指的數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)表進(jìn)行搜索,,并完成指定的操作:

For Each Td In DB.Table Defs ' 循環(huán)搜索數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)表
  ... ... ' 對(duì)數(shù)據(jù)表執(zhí)行指定的操作
Next

  5、復(fù)制數(shù)據(jù)庫(kù)的結(jié)構(gòu)定義

  在數(shù)據(jù)庫(kù)應(yīng)用中,經(jīng)常需要在程序運(yùn)行時(shí)動(dòng)態(tài)地把一個(gè)數(shù)據(jù)庫(kù)的結(jié)構(gòu)定義完整地復(fù)制到另一個(gè)數(shù)據(jù)庫(kù)中,。由于新型的數(shù)據(jù)庫(kù)可以同時(shí)包含若干個(gè)數(shù)據(jù)表,,而每個(gè)數(shù)據(jù)表的結(jié)構(gòu)定義又不近相同,因此,,如果通過(guò)逐個(gè)定義數(shù)據(jù)表中所有字段的類型,、長(zhǎng)度的方法復(fù)制數(shù)據(jù)庫(kù)結(jié)構(gòu),則該程序?qū)⒆兊孟喈?dāng)冗長(zhǎng)和復(fù)雜,,日后的維護(hù)也比較困難,。但是,通過(guò)綜合運(yùn)用上述的幾種應(yīng)用方法,,用相當(dāng)短的VB語(yǔ)句完成同樣的工作,,實(shí)且程序也易于理解和維護(hù)。

  程序清單如下:

Sub CopyDBStrnc(src As String,dst As String)
  ' 定義子程序Copy DBStrnc,,用于復(fù)制數(shù)據(jù)庫(kù)結(jié)構(gòu)
  ' 調(diào)用參數(shù):
  ' src--源數(shù)據(jù)庫(kù)的文件名
  ' dst--目的數(shù)據(jù)庫(kù)的文件名
  Dim DB As Database,Td As TableDef,SQLstr As String
  ' 定義變量:
  ' DB--數(shù)據(jù)庫(kù)對(duì)象
  ' Td--數(shù)據(jù)表定義對(duì)象
  ' SQLstr--SQL語(yǔ)句變量
  Set DB=Create Database(dst,dbLangGeneral)
  ' 創(chuàng)建目的數(shù)據(jù)庫(kù)dst
  ' 關(guān)閉目的數(shù)據(jù)庫(kù)dst
  DB.Close
  Set db=OpenDatabase(src,False,True)
  ' 以共享,、只讀方式打開源數(shù)據(jù)庫(kù)src
  For Each Td In DB.TableDefs
   ' 循環(huán)搜索源數(shù)據(jù)庫(kù)DB中的所有數(shù)據(jù)表定義
   If(Td.Attributes And dbSyste mObect)=0 Then
    ' 忽略系統(tǒng)數(shù)據(jù)表,只針對(duì)用戶定義的數(shù)據(jù)表進(jìn)行搜寫
    SQLstr="SELECT * INTO"+Td.Name+"IN"+dst+"'FROM"+
        Td.Name+"'IN"+src+"'WHERE False'
    ' 對(duì)SQL語(yǔ)句變量賦值,,完成以下功能:
    ' 從源數(shù)據(jù)庫(kù)src的數(shù)據(jù)表中選擇所有字段
    ' 存入目的數(shù)據(jù)庫(kù)dst的同名數(shù)據(jù)表中
    ' 選擇數(shù)據(jù)表的字段定義,,不包括任何記錄
    DB.Execute(SQLstr) ' 執(zhí)行SQL語(yǔ)句
   End If
  Next ' 結(jié)束循環(huán)搜索
  DB.Close ' 關(guān)閉源數(shù)據(jù)庫(kù)
Exit Sub ' 結(jié)束子程序定義

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多