999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

非Access數(shù)據(jù)庫在VB中的編程及應(yīng)用

2012-08-15 00:44:35西安外事學(xué)院工學(xué)院
電子世界 2012年6期
關(guān)鍵詞:數(shù)據(jù)庫方法

西安外事學(xué)院工學(xué)院 文 欣

存取對象變量庫結(jié)構(gòu)作為一個功能較完備的Windows軟件開發(fā)平臺,Visual Basic專業(yè)版提供了對數(shù)據(jù)庫應(yīng)用的強(qiáng)大支持。尤其提供了使用數(shù)據(jù)控件和綁定控制項,使用數(shù)據(jù)庫存取對象變量(Data Access Object Variable),直接調(diào)用ODBC 2.0 API接口函數(shù)等三種訪問數(shù)據(jù)庫的方法。對其標(biāo)準(zhǔn)內(nèi)置的Ms Access數(shù)據(jù)庫,它可以提供不弱于專業(yè)數(shù)據(jù)庫軟件的支持,可以進(jìn)行完整的數(shù)據(jù)庫維護(hù)、操作及其事務(wù)處理。在VB中,將非Access數(shù)據(jù)庫稱為外來數(shù)據(jù)庫。對于FoxPro、dBASE、Paradox等外來數(shù)據(jù)庫。雖然借助VB的Data Manager能夠?qū)@些數(shù)據(jù)庫進(jìn)行NEW、OPEN、DESIGN、DELETE等操作,但在應(yīng)用程序的運(yùn)行狀態(tài)中并不能從底層真正實現(xiàn)這些功能。本文從使用數(shù)據(jù)庫存取對象變量的方法出發(fā),實現(xiàn)了非Access格式數(shù)據(jù)庫(以FoxPro數(shù)據(jù)庫為例)的建新庫、拷貝數(shù)據(jù)庫結(jié)構(gòu)、動態(tài)調(diào)入等操作,闡述了從編程技巧上彌補(bǔ)VB對這些外來數(shù)據(jù)庫支持不足的可行性。

一、VB數(shù)據(jù)庫的體系結(jié)構(gòu)具體的VB的數(shù)據(jù)庫結(jié)構(gòu)

VB數(shù)據(jù)庫的核心結(jié)構(gòu)是所謂的MicroSoft JET數(shù)據(jù)庫引擎,JET引擎的作用就像是一塊“面板”,在其上可以插入多種ISAM(Indexed Sequential Access Method,即索引順序存取方法)數(shù)據(jù)驅(qū)動程序。

VB專業(yè)版中提供了FoxPro、dBASE(或Xbase)、Paradox、Btrieve等數(shù)據(jù)庫的ISAM驅(qū)動程序,這就使得VB能支持這些數(shù)據(jù)庫格式。另外,其他的許多兼容ISAM的驅(qū)動程序也可以通過從廠商的售后服務(wù)得到。因而從理論上說,VB能支持所有兼容ISAM的數(shù)據(jù)庫格式(前提是只需獲得這些數(shù)據(jù)庫的ISAM驅(qū)動接口程序)。

由上可見,Ms JET引擎實質(zhì)上提供了:一個符合ANSI標(biāo)準(zhǔn)的語法分析器;為查詢結(jié)果集的使用而提供的內(nèi)存管理功能;同所支持的數(shù)據(jù)庫的外部接口;為應(yīng)用代碼提供的內(nèi)部接口。實際上,在VB中從一種數(shù)據(jù)庫類型轉(zhuǎn)化為另一種數(shù)據(jù)庫類型幾乎不需要或只需要很少的代碼修改。而且,盡管dBASE、Paradox本身的DDL(Data Definition Language,即數(shù)據(jù)定義語言)和DML(Data Manipulation Language,即數(shù)據(jù)操縱語言)是非結(jié)構(gòu)化查詢的,但它們?nèi)匀豢梢允褂肰B的SQL語句和JET引擎來操縱。

從VB的程序代碼的角度來看,ODBC,ISAM驅(qū)動程序以及Ms Access數(shù)據(jù)庫的整個外部結(jié)構(gòu)夠可以統(tǒng)一為一個一致的編程接口。也即是說,提供給VB應(yīng)用程序員的記錄集對象視圖同所使用的數(shù)據(jù)庫格式及類型是相互獨立的。即對FoxPro等數(shù)據(jù)庫仍然可以使用眾多的數(shù)據(jù)庫存取對象變量,這就為非Access數(shù)據(jù)庫的訪問提供了最重要的方法。

二、使用非Access數(shù)據(jù)庫時的參數(shù)設(shè)置及配置文件的參數(shù)讀取

如果在VB的程序中使用了數(shù)據(jù)庫的操作,將應(yīng)用程序生成EXE文件或打包生成安裝程序后,則必須提供一個配置(.INI)文件,在INI文件中可以對不同類型的數(shù)據(jù)庫進(jìn)行設(shè)置。通常情況下,INI文件的文件名和應(yīng)用程序的名稱相同,所以如果沒有指明,VB的程序會在Windows子目錄中去找和應(yīng)用程序同名的INI文件。可以使用VB中的SetDataAccessOptions語句來設(shè)置INI文件。

SetDataAccessOptions語句的用法如下:

SetDataAccessOptions 1,IniFile-Name其中IniFileName參數(shù)指明的是INI文件的帶路徑的文件名。值得注意的是,當(dāng)應(yīng)用程序找不到這個INI文件時,或在調(diào)用OpenDataBase函數(shù)時對其Connect參數(shù)值沒有設(shè)定為VB規(guī)定的標(biāo)準(zhǔn)值,如對FoxPro 2.5格式設(shè)定為了"FoxPro;"(應(yīng)為"FoxPro 2.5;"),或者沒有安裝相應(yīng)的ISAM驅(qū)動程序,則此時VB會顯示一條錯誤信息"Not Found Installable ISAM"。通常,INI文件在應(yīng)用程序分發(fā)出去以前已經(jīng)生成,或者在安裝時動態(tài)生成,也可以在應(yīng)用程序中自己生成。通常這種INI文件中有"[Options]"、"[ISAM]"、"[Installed ISAMs]"、"[FoxPro ISAM]"、"[dBASE ISAM]"、"[Paradox ISAM]"等設(shè)置段,對于一個完整的應(yīng)用程序則還應(yīng)有一個屬于應(yīng)用程序自己的設(shè)置段如"[MyDB]"。可在其中設(shè)置DataType、Server、DataBase、OpenOnStartup、DisplaySQL、QueryTimeOut等較為重要的數(shù)據(jù)庫參數(shù),并以此限定應(yīng)用程序一般的運(yùn)行環(huán)境。Windows API接口函數(shù)在Kernel.exe動態(tài)鏈接庫中提供了一個OSWritePrivateProfileString函數(shù),此函數(shù)能按Windows下配置文件(.INI)的書寫格式寫入信息。

設(shè)此應(yīng)用程序的配置文件為MyDB.INI,則具體過程如下:Funtion GetINIString$(Byval Fname$,Byval szItem$,Byval szDeFault$)'此自定義子函數(shù)實現(xiàn)INI文件內(nèi)設(shè)置段內(nèi)參數(shù)的讀取Dim Tmp As String,x As Integer Tmp=String(2048,32)x=OSGetPrivat eProfileString(Fname$,szItem$,szDefault$,Tmp,Len(Tmp),"MyDB.INI")GetINIString=Mid$(Tmp,1,x)EndFunction以下這些函數(shù)的聲明可寫在模塊文件內(nèi),且每個函數(shù)的聲明必須在一行內(nèi)Declare Function OSGetPrivateProfileString% Lib"Kerne l"Alias"GetPrivateProfileString"(By Val AppName$,ByVal KeyName$,ByVal keydefault$,ByVal ReturnString$,ByVal NumBytes As Integer,ByVal FileName$)Declare Function OSWritePrivateProfileString% Lib"Kern el"Alias"WritePrivateProfileString"(B yVal AppName$,ByVal KeyName$,ByVal keydefault$,ByVal FileName$)Declare Function OSGetWindowsDirectory% Lib"K ernel"Alias"GetWindowsDirectory"(ByV al a$,ByVal b%)Sub Form1_Load( )Dim st As String Dim x As Integer Dim tmp As String tmp=String$(255,32)'

INI文件內(nèi)為各種數(shù)據(jù)庫格式指明已安裝的相應(yīng)ISAM驅(qū)動程序x=OSWrit ePrivateProfileString(“Installab le ISAMS”,"Paradox 3.X","PDX110.DLL","MyDB.INI")x=OSWritePrivateP rofileString("Installable ISAMS","dBASE III","XBS110.DLL","MyDB.INI")x=OSWritePrivateProfileString("Installable ISAMS","dBASE IV","XBS110.DLL","MyDB.INI")x=OSWrite PrivateProfileString("Installable ISAMS","FoxPro 2.0","XBS110.DLL","MyDB.INI" )x=OSWritePrivateProfile String("Installable ISAMS","FoxPro 2.5","XBS110.DLL","MyDB.INI")x=O SWritePrivateProfileString("Instal lable ISAMS","Btrieve","BTRV110.DLL","MyDB.INI")x=OSWritePrivatePro fileString("dBase ISAM","Deleted","On","MyDB.INI")’指明INI文件的位置x=OSGetWindowsDirectory(tmp,255)st=Mid$(tmp,1,x)SetDataAccessOption 1,s t+"m y d b.i n i"‘獲得I N I文件一些參數(shù)g w M a x G r i d R o w s=Val(GetINIString("MyDB.INI","MaxRows","250")) glQueryTimeout=Val(GetINIString("MyDB.INI","QueryTimeout","5")) glLoginTimeout=Val(GetINIString("MyDB.INI","LoginTimeout","20" ))End Sub

三、數(shù)據(jù)存取對象變量對外來數(shù)據(jù)庫編程的方法及其實例

在VB專業(yè)版數(shù)據(jù)庫編程的三種方法中,第二種,使用數(shù)據(jù)庫存取對象變量(DAO)的方法最具有功能強(qiáng)大、靈活的特點。它能夠在程序中存取ODBC 2.0的管理函數(shù);可以控制多種記錄集類型:Dynaset,Snapshot及Table記錄集合對象;可以存儲過程和查詢動作;可以存取數(shù)據(jù)庫集合對象,例如TableDefs,F(xiàn)ields,Indexes及QueryDefs;具有真正的事物處理能力。因而,這種方法對數(shù)據(jù)庫處理的大多數(shù)情況都非常適用。

由于VB中的記錄集對象與所使用的數(shù)據(jù)庫格式及類型是相互獨立的,所以在非Access數(shù)據(jù)庫中也可以使用數(shù)據(jù)庫存取對象變量的方法。因而對FoxPro等外來數(shù)據(jù)庫而言,使用數(shù)據(jù)庫存取對象變量的方法同樣也是一種最佳的選擇。

非Access數(shù)據(jù)庫的新建及庫結(jié)構(gòu)的修改VB專業(yè)版中的數(shù)據(jù)庫存取對象變量可以分為兩類,一類用于數(shù)據(jù)庫結(jié)構(gòu)的維護(hù)和管理,另一類用于數(shù)據(jù)的存取。其中表示數(shù)據(jù)庫結(jié)構(gòu)時可以使用下面的對象:

DataBase、TableDef、Field、Index,以及三個集合(Collection):TableDefs、Fields和Indexes。每一個集合都是由若干個對象組成的,這些數(shù)據(jù)對象的集合可以完全看作是一個數(shù)組,并按數(shù)組的方法來調(diào)用。對于非Access數(shù)據(jù)庫,大部分都是對應(yīng)于一個目錄,所以可以使用VB的MkDir語句先生成一個目錄,亦即新建一個數(shù)據(jù)庫。而每一個非Access數(shù)據(jù)庫文件可看作是此目錄下的一個數(shù)據(jù)表(Table),但實際上它們是互相獨立的。

下面是新建一個FoxPro 2.5格式數(shù)據(jù)庫的程序?qū)嵗?/p>

Sub CreateNew( )Dim Db1 As database,Td As TableDefs Dim T1 As New Tabledef,F(xiàn)1 As New Field,F(xiàn)2 As New Field,F(xiàn)3 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,F(xiàn)alse,"FoxPro 2.5;")Set Td = Db1.TableDefs T1.Name="MyDB"‘新建一個數(shù)據(jù)表,數(shù)據(jù)表名為MyDB F1.Name="Name",F(xiàn)1.Type=DB_TEXT,F(xiàn)1.Size=20 F2.Name="Class",F(xiàn)2.Type=DB_TEXT,F(xiàn)2.Size=20 F3.Name="Grade",F(xiàn)3.Type=DB_INTEGER T1.Fields.Append F1‘向數(shù)據(jù)表中添加這些字段T1.Fields.Append F2。

[1]明日科技.Visual Basic開發(fā)經(jīng)驗技巧寶典[M].人民郵電出版社,2007,9.

[2]邱李華,等.Visual Basic程序設(shè)計教程[M].機(jī)械工業(yè)出版社,2007,7.

[3]李淑華.VB程序設(shè)計及應(yīng)用[M].高等教育出版社,2008,9.

[4]張勇.Visual Basic課程設(shè)計案例精編[M].中國水利水電出版社,2010,3.

猜你喜歡
數(shù)據(jù)庫方法
學(xué)習(xí)方法
數(shù)據(jù)庫
財經(jīng)(2017年15期)2017-07-03 22:40:49
數(shù)據(jù)庫
財經(jīng)(2017年2期)2017-03-10 14:35:35
數(shù)據(jù)庫
財經(jīng)(2016年15期)2016-06-03 07:38:02
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
數(shù)據(jù)庫
財經(jīng)(2016年3期)2016-03-07 07:44:46
數(shù)據(jù)庫
財經(jīng)(2016年6期)2016-02-24 07:41:51
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 国产精品手机在线播放| 国产精品亚洲综合久久小说| 亚洲精品你懂的| 蜜芽一区二区国产精品| 99re在线视频观看| 国产高清在线观看| 久久成人18免费| 亚洲一区二区三区中文字幕5566| 国产又粗又猛又爽| AV网站中文| 午夜精品久久久久久久99热下载| 噜噜噜久久| 日韩精品成人在线| 毛片免费试看| 在线观看av永久| 国产无码精品在线| 在线国产91| 国产精品永久免费嫩草研究院| 熟女成人国产精品视频| 亚洲欧美天堂网| 乱人伦99久久| 亚洲男人天堂久久| 国产不卡网| 国产乱子伦手机在线| 国产日本一区二区三区| 国产成人成人一区二区| 狠狠综合久久| 日韩无码视频播放| 国产爽妇精品| 欧美激情,国产精品| 青草视频在线观看国产| 久久国产精品电影| 亚洲精品亚洲人成在线| 国产综合欧美| a天堂视频在线| 美女扒开下面流白浆在线试听| 午夜无码一区二区三区在线app| 99久久99这里只有免费的精品| 18禁色诱爆乳网站| 狠狠色综合久久狠狠色综合| 99热亚洲精品6码| 中国毛片网| 天天综合网色| 日本欧美在线观看| 亚洲永久精品ww47国产| 97超爽成人免费视频在线播放| 麻豆AV网站免费进入| 日本成人福利视频| 在线观看国产精品日本不卡网| 伊人久久精品无码麻豆精品| 国产av无码日韩av无码网站| 国产丝袜丝视频在线观看| 国产91麻豆免费观看| 伊人丁香五月天久久综合 | 亚洲精品天堂在线观看| 亚洲视频一区| 正在播放久久| 国产人成在线视频| 网久久综合| 91香蕉视频下载网站| 亚洲精品综合一二三区在线| 男女猛烈无遮挡午夜视频| 97se亚洲综合不卡| 中文字幕不卡免费高清视频| 91av成人日本不卡三区| 亚洲第一成网站| 免费看av在线网站网址| 亚洲A∨无码精品午夜在线观看| 国产情精品嫩草影院88av| 成人日韩视频| 国产肉感大码AV无码| 欧美爱爱网| 免费观看三级毛片| 国产全黄a一级毛片| 潮喷在线无码白浆| 久久国产精品电影| 无码高潮喷水在线观看| 91青青在线视频| 色噜噜在线观看| 99re热精品视频国产免费| 国产精品深爱在线| 72种姿势欧美久久久大黄蕉|