資源描述:
《VB中遠(yuǎn)程數(shù)據(jù)庫(kù)的訪問(wèn)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、VB中遠(yuǎn)程數(shù)據(jù)庫(kù)的訪問(wèn)(1)-數(shù)據(jù)連接在VB中,用microsoftjet數(shù)據(jù)庫(kù)引擎和數(shù)據(jù)訪問(wèn)對(duì)象DAO(dataaccessobject)可以創(chuàng)建功能強(qiáng)大的客戶/服務(wù)器應(yīng)用程序。對(duì)遠(yuǎn)程數(shù)據(jù)庫(kù)的訪問(wèn)是開發(fā)這類應(yīng)用程序的關(guān)鍵環(huán)節(jié),本文將介紹在VB中用DAO通過(guò)miscrosoftjet數(shù)據(jù)庫(kù)引擎訪問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù)的方法?! ∮肈AO訪問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù)大體上可以通過(guò)三步來(lái)實(shí)現(xiàn),即數(shù)據(jù)連接、數(shù)據(jù)處理和斷開連接。下面主要介紹數(shù)據(jù)連接和數(shù)據(jù)處理的具體操作。一、數(shù)據(jù)連接 DAO一般通過(guò)鏈接遠(yuǎn)程表的方式來(lái)進(jìn)行數(shù)據(jù)連接。這樣,數(shù)
2、據(jù)雖然駐留在遠(yuǎn)程數(shù)據(jù)源上,但在本地的microsoftjet數(shù)據(jù)庫(kù)中可以存儲(chǔ)與遠(yuǎn)程數(shù)據(jù)的永久性連接,同時(shí)緩存鏈接的表結(jié)構(gòu)信息,從而在下一次訪問(wèn)該表時(shí),不用再次從服務(wù)器中檢索這些結(jié)構(gòu)信息,加快了連接速度。一旦鏈接了一個(gè)表,該鏈接便會(huì)保留在各會(huì)話期間,直到連接斷開。鏈接遠(yuǎn)程表的具體操作是:用opendatabase方法打開將要包含該鏈接的本地microsoftjet數(shù)據(jù)庫(kù)用createtabledef方法在該數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)新的tabledef對(duì)象將tabledef對(duì)象的connect屬性設(shè)置為一個(gè)合法的連接字
3、符串,標(biāo)識(shí)要訪問(wèn)的遠(yuǎn)程數(shù)據(jù)庫(kù)類型、數(shù)據(jù)文件的路徑以及用戶名和遠(yuǎn)程數(shù)據(jù)源密碼等。將tabledef對(duì)象的sourcetablename屬性設(shè)置為遠(yuǎn)程數(shù)據(jù)庫(kù)中要訪問(wèn)的表的名稱。添加tabledef對(duì)象到tabledefs集合中。實(shí)現(xiàn)鏈接遠(yuǎn)程表操作的過(guò)程如下:publicsublinktable(strdbasstring,strrodbasstring,strcnasstring,strtdfasstring,_linktdfnameasstring)dimlinktdfasnewtabledefsetdbs=
4、opendatabase(strdb)linktdf.name=linktdfname100temptable=ucase(linktdf.name)fori=0todbs.tabledefs.count-1ifucase(dbs.tabledefs(i).name)=temptablethenifmsgbox(linktdfname+"已存在,是否刪除?",_vbquestion+vbyesno)=vbyesthendbs.tabledefs.deletelinktdf.nameexitforelse:m
5、sgbox"重新輸入新表名"linktdfname=inputbox("新表名")goto100endifendifnextisetlinktdf=dbs.createtabledef(linktdfname)’鏈接遠(yuǎn)程表linktdf.connect=";database="+strcnlinktdf.sourcetablename=strtdfdbs.tabledefs.appendlinktdfendsub上述過(guò)程用來(lái)實(shí)現(xiàn)遠(yuǎn)程表的連接,它有5個(gè)參數(shù),其中strrodb是要訪問(wèn)的遠(yuǎn)程數(shù)據(jù)庫(kù)名(包括路徑)
6、;strtdf是該數(shù)據(jù)庫(kù)中的表名;strdb是要鏈接的本地?cái)?shù)據(jù)庫(kù)(包括路徑);linktdfname是本地?cái)?shù)據(jù)庫(kù)的一個(gè)新表名,用來(lái)建立遠(yuǎn)程表的鏈接;strcn是指定連接信息的字符串。需要特別注意的是,除了在訪問(wèn)遠(yuǎn)程microsoftjet數(shù)據(jù)庫(kù)時(shí),連接字符串要以分號(hào)(;)開頭外,指定連接信息的字符串都必須以所訪問(wèn)的遠(yuǎn)程數(shù)據(jù)庫(kù)類型開頭。DAO可以訪問(wèn)的遠(yuǎn)程數(shù)據(jù)源有以下三類:.microsoftjet數(shù)據(jù)源,如:access數(shù)據(jù)。.iisam(可安裝的索引化順序訪問(wèn)方法)格式數(shù)據(jù)源,如:foxpro、parad
7、ox、dbase數(shù)據(jù)。.odbc數(shù)據(jù)源,如:sqlserver數(shù)據(jù)、oracle數(shù)據(jù)?! ±纾涸O(shè)網(wǎng)絡(luò)服務(wù)器名為server,共享目錄為c:sales的foxpro3.0數(shù)據(jù)庫(kù),連接字符串應(yīng)為strcn="foxpro3.0;database=\serverc$salesregion1" 此外,DAO通過(guò)microsoftjet數(shù)據(jù)庫(kù)引擎訪問(wèn)遠(yuǎn)程數(shù)據(jù)時(shí),還可以用opendatabase方法直接打開遠(yuǎn)程表。在本地?cái)?shù)據(jù)庫(kù)中并未存儲(chǔ)與遠(yuǎn)程數(shù)據(jù)源建立連接所需要的信息。如果使用鏈接方式訪問(wèn)數(shù)據(jù),則不必在每
8、次會(huì)話開始時(shí)提供連接信息,從而可以提高效率。????VB中遠(yuǎn)程數(shù)據(jù)庫(kù)的訪問(wèn)(2)-數(shù)據(jù)處理二、數(shù)據(jù)處理 數(shù)據(jù)連接建立后,可以用openrecordset方法打開一個(gè)記錄集,并可用dbgrid控件和data控件方便地瀏覽整個(gè)記錄集。如果使用表類型(table-type)記錄對(duì)象,則對(duì)應(yīng)的是一個(gè)實(shí)際存在的數(shù)據(jù)庫(kù)表,在多用戶環(huán)境下,其它用戶對(duì)數(shù)據(jù)的修改會(huì)立即反映到表中;如果使用動(dòng)態(tài)集類型(dynaset-type)記