三 、數據存取對象變量對外來數據庫編程的方法及其實例
在vb專業版數據庫編程的三種方法中,第二種—使用數據庫存取對象變量(dao)的方法最具有功能強大、靈活的特點。它能夠在程序中存取odbc2.0的管理函數;可以控制多種記錄集類型:dynaset,snapshot及table記錄集合對象;可以存儲過程和查詢動作;可以存取數據庫集合對象,例如tabledefs,fIElds,indexes及querydefs;具有真正的事物處理能力。因而,這種方法對數據庫處理的大多數情況都非常適用。由於vb中的記錄集對象與所使用的數據庫格式及類型是相互獨立的,所以在非Access數據庫中也可以使用數據庫存取對象變量的方法。因而對foxpro等外來數據庫而言,使用數據庫存取對象變量的方法同樣也是一種最佳的選擇。
有一點需要注意的是,vb的標准版中僅能使用數據控件(data control)對數據庫中的記錄進行訪問,主要的數據庫存取對象中也僅有database、dynaset對象可通過數據控件的屬性提供,其它的重要對象如tabledef、fIEld、index、querydef、snapshot、table等均不能在vb的標准版中生成,所以使用數據存取對象變量的方法只能用vb3.0以上的專業版。
非Access數據庫的新建及庫結構的修改
vb專業版中的數據庫存取對象變量可以分為兩類,一類用於數據庫結構的維護和管理,另一類用於數據的存取。其中表示數據庫結構時可以使用下面的對象:database、tabledef、field、index,以及三個集合(collection):tabledefs、fIElds和indexes。每一個集合都是由若干個對象組成的,這些數據對象的集合可以完全看作是一個數組,並按數組的方法來調用。一旦數據庫對象建立後,就可以用它對數據庫的結構進行修改和數據處理。
對於非access數據庫,大部分都是對應於一個目錄,所以可以使用vb的mkdir語句先生成一個目錄,亦即新建一個數據庫。而每一個非Access數據庫文件可看作是此目錄下的一個數據表(table),但實際上它們是互相獨立的。
下面是新建一個foxpro2.5格式數據庫的程序實例。
sub createnew ( )
dim db1 as database , td as tabledefs dim t1 as new tabledef , f1 as new field , f2 as new field , f3 as new fIEld
dim ix1 as new index
dim path as string
const db_text = 10 , db_integer = 3
chdir "\" path$ = inputbox( " 請 輸 入 新 路 徑 名 : ", " 輸 入 對 話 框 " ) mkdir path$
’ 新 建 一 個 子 目 錄
set db1 = opendatabase(path$, true, false, "foxpro 2.5;")
set td = db1.tabledefs t1.name = "mydb"
’ 新 建 一 個 數 據 表 , 數 據 表 名 為 mydb
f1.name = "name" , f1.type = db_text , f1.size = 20 f2.name = "class" , f2.type = db_text , f2.size = 20 f3.name = "grade" , f3.type = db_integer t1.fIElds.append f1
’ 向 數 據 表 中 添 加 這 些 字 段 t1.fIElds.append f2