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

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

2017-06-29 15:24:44劉建軍
東方教育 2017年8期
關(guān)鍵詞:數(shù)據(jù)庫

劉建軍

摘要:Visual Basic有著強大的數(shù)據(jù)庫存取能力,不僅能夠直接支持Ms Access數(shù)據(jù)庫,而且通過其內(nèi)部安裝的ISAM驅(qū)動程序使它能間接支持FoxPro、dBASE等外來數(shù)據(jù)庫。本文不僅從VB數(shù)據(jù)庫體系結(jié)構(gòu)的角度探討了VB對這些外來數(shù)據(jù)庫的支持,還結(jié)合了一些實例具體闡述了使用數(shù)據(jù)庫存取對象變量的方法實現(xiàn)這些外來數(shù)據(jù)庫的新建、庫結(jié)構(gòu)修改、顯示及其運行環(huán)境設(shè)置。

關(guān)鍵詞:Visual Basic Access;外來數(shù)據(jù)庫;數(shù)據(jù)庫

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

一、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ū)動程序。JET引擎為Access格式數(shù)據(jù)庫提供了直接的內(nèi)部(build-in)支持,這就是VB對Access數(shù)據(jù)庫具有豐富支持的真正原因。VB專業(yè)版中提供了FoxPro、dBASE(或 Xbase)、Paradox、Btrieve等數(shù)據(jù)庫的ISAM驅(qū)動程序,這就使得VB能支持這些數(shù)據(jù)庫格式,因而從理論上說,VB能支持所有兼容ISAM的數(shù)據(jù)庫格式(前提是只需獲得這些數(shù)據(jù)庫的ISAM驅(qū)動接口程序)。由上可見,Ms JET引擎實質(zhì)上提供了:一個符合ANSI標準的語法分析器;為查詢結(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ù)庫進行設(shè)置。如果找不到這個INI文件, 將會導(dǎo)致不能訪問數(shù)據(jù)庫。通常情況下,INI文件的文件名和應(yīng)用程序的名稱相同,所以如果沒有指明,VB的程序會在Windows子目錄中去找和應(yīng)用程序同名的INI文件。可以使用VB中的SetDataAccessOptions語句來設(shè)置INI文件。 SetDataAccessOptions語句的用法如下:SetDataAccessOptions 1 ,IniFileName其中IniFileName參數(shù)指明的是INI文件的帶路徑的文件名。值得注意的是,當應(yīng)用程序找不到這個INI文件時,或在調(diào)用 OpenDataBase函數(shù)時對其Connect參數(shù)值沒有設(shè)定為VB規(guī)定的標準值,如對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)用程序一般的運行環(huán)境。 Windows API接口函數(shù)在Kernel.exe動態(tài)鏈接庫中提供了一個OSWritePrivateProfileString函數(shù),此函數(shù)能按Windows下配置文件(.INI)的書寫格式寫入信息。在通常情況下,應(yīng)用程序還需要在運行時讀取配置文件內(nèi)相關(guān)項的參數(shù)。比如PageTimeOut(頁加鎖超時時限)、MaxBufferSize(緩沖區(qū)大小)、LockRetry(加鎖失敗時重試次數(shù))等參數(shù),通過對這些參數(shù)的讀取對應(yīng)用程序運行環(huán)境的設(shè)定、潛在錯誤的捕獲等均會有很大的改善。設(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 = OSGetPrivate ProfileString(Fname$,szItem$ , szDefault$,Tmp,Len(Tmp) ,"MyDB.INI " ) GetINIString = Mid$( Tmp,1,x ) EndFunction

三、數(shù)據(jù)存取對象變量對外來數(shù)據(jù)庫編程的方法及其實例在VB專業(yè)版數(shù)據(jù)庫編程的三種方法中,第二種-使用數(shù)據(jù)庫存取對象變量(DAO)的方法最具有功能強大、靈活的特點。 它能夠在程序中存取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ù)庫存取對象變量的方法同樣也是一種最佳的選擇。有一點需要注意的是,VB的標準版中僅能使用數(shù)據(jù)控件(Data Control)對數(shù)據(jù)庫中的記錄進行訪問,主要的數(shù)據(jù)庫存取對象中也僅有Database、Dynaset對象可通過數(shù)據(jù)控件的屬 性提供,其它的重要對象如TableDef、Field、Index、QueryDef、Snapshot、Table等均不能在VB的標準版中生成,所以使用數(shù)據(jù)存取對象變量的方法只能用VB 3.0以上的專業(yè)版。非Access數(shù)據(jù)庫的新建及庫結(jié)構(gòu)的修改VB專業(yè)版中的數(shù)據(jù)庫存取對象變量可以分為兩類,一類用于數(shù)據(jù)庫結(jié)構(gòu)的維護和管理,另一類用于數(shù)據(jù)的存取。其中表示數(shù)據(jù)庫結(jié)構(gòu)時可以使用下面的對象:DataBase、TableDef、Field、Index,以及三個集合 (Collection): TableDefs、Fields和Indexes 。每一個集合都是由若干個對象組成的,這些數(shù)據(jù)對象的集合可以完全看作是一個數(shù)組,并按數(shù)組的方法來調(diào)用。一旦數(shù)據(jù)庫對象建立后,就可以用它對數(shù)據(jù)庫的結(jié)構(gòu)進行修改和數(shù)據(jù)處理。對于非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 , F1 As New Field,F(xiàn)2 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" '新建一個數(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, F2.Size = 20 F3.Name = "Grade",F(xiàn)3.Type = DB_INTEGER T1.Fields.Append F1 '向數(shù)據(jù)表中添加這些字段T1.Fields.Append F2。

猜你喜歡
數(shù)據(jù)庫
數(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ù)庫上的Top-K查詢
數(shù)據(jù)庫
財經(jīng)(2016年15期)2016-06-03 07:38:02
數(shù)據(jù)庫
財經(jīng)(2016年3期)2016-03-07 07:44:46
數(shù)據(jù)庫
財經(jīng)(2016年6期)2016-02-24 07:41:51
數(shù)據(jù)庫
財經(jīng)(2015年3期)2015-06-09 17:41:31
數(shù)據(jù)庫
財經(jīng)(2014年21期)2014-08-18 01:50:18
數(shù)據(jù)庫
財經(jīng)(2014年6期)2014-03-12 08:28:19
數(shù)據(jù)庫
財經(jīng)(2013年6期)2013-04-29 17:59:30
主站蜘蛛池模板: 成人在线综合| 欧美天天干| 亚洲欧美日韩天堂| 三区在线视频| 久久男人资源站| 99精品视频在线观看免费播放| 999国产精品| 欧美精品二区| 色哟哟色院91精品网站| 久久婷婷五月综合97色| 综合社区亚洲熟妇p| av免费在线观看美女叉开腿| 无码日韩视频| 欧美www在线观看| 久久国产精品国产自线拍| 五月婷婷激情四射| 97se亚洲综合不卡 | 亚洲成人一区二区三区| 欧美国产在线一区| 女人av社区男人的天堂| 国产不卡一级毛片视频| 69av在线| 欧美在线黄| 亚洲欧美日韩另类在线一| 国产乱肥老妇精品视频| www.精品国产| 黄色片中文字幕| 一区二区三区在线不卡免费 | 天堂在线视频精品| 在线中文字幕网| 999国内精品久久免费视频| 在线欧美一区| 亚洲国产日韩在线观看| 青青国产视频| 国产白浆一区二区三区视频在线| 欧美亚洲国产精品第一页| 国产亚洲欧美在线中文bt天堂| 国产丝袜第一页| 色香蕉网站| 91久久精品国产| 一级毛片a女人刺激视频免费| 国产午夜无码片在线观看网站 | 久草中文网| 喷潮白浆直流在线播放| 国产噜噜在线视频观看| 无码日韩精品91超碰| 国产香蕉国产精品偷在线观看| 88国产经典欧美一区二区三区| 无码免费的亚洲视频| 暴力调教一区二区三区| 免费国产不卡午夜福在线观看| 成人亚洲天堂| 四虎影视永久在线精品| 精品1区2区3区| 国产精品三级专区| 免费黄色国产视频| 456亚洲人成高清在线| 亚洲国产欧美目韩成人综合| 久久99国产视频| 国产精品v欧美| 久久成人免费| 国产H片无码不卡在线视频| 久久频这里精品99香蕉久网址| 亚洲高清在线播放| 青青操国产| 久久人搡人人玩人妻精品| 91精品国产麻豆国产自产在线| 亚洲中文久久精品无玛 | 丁香六月综合网| 精品综合久久久久久97超人| 国产成人精品一区二区不卡| 国产小视频网站| 一级爱做片免费观看久久| 丁香六月综合网| 日韩无码视频播放| 国产成人综合日韩精品无码不卡| 色亚洲成人| 亚洲无码熟妇人妻AV在线| 欧美一区二区三区欧美日韩亚洲| 无码网站免费观看| 亚洲不卡av中文在线| 国产成人高清精品免费5388|