用VisualFoxpro開發(fā)主從結(jié)構(gòu)數(shù)據(jù)庫系統(tǒng)_第1頁
用VisualFoxpro開發(fā)主從結(jié)構(gòu)數(shù)據(jù)庫系統(tǒng)_第2頁
用VisualFoxpro開發(fā)主從結(jié)構(gòu)數(shù)據(jù)庫系統(tǒng)_第3頁
用VisualFoxpro開發(fā)主從結(jié)構(gòu)數(shù)據(jù)庫系統(tǒng)_第4頁
全文預覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

PAGE1用VisualFoxpro開發(fā)主從結(jié)構(gòu)數(shù)據(jù)庫系統(tǒng)目前流行的數(shù)據(jù)庫開發(fā)平臺很多,如DELPHI、VB、PB等,有關(guān)用它們?nèi)绾伍_發(fā)基于C/S模式的應用系統(tǒng)的書籍、文章也較多,但是卻很少見到關(guān)于用VisualFoxpro(VFP)開發(fā)C/S結(jié)構(gòu)的文章,即使有也只是泛泛而談,講的不具體,讀者看了之后,仍然不知道如何去開發(fā)。還有好多人對VFP的認識還是停留在FOXBASE和FOXPRO的基礎(chǔ)上,經(jīng)常有人問,"用VFP能開發(fā)C/S結(jié)構(gòu)的系統(tǒng)嗎?",于是我一次又一次的充當了VFP的解說員。其實用VFP開發(fā)基于C/S模式的系統(tǒng)是可以的,而且原來所熟悉的各種技術(shù)在開發(fā)主從結(jié)構(gòu)時仍然完全適用,而我國有許多MIS系統(tǒng)開發(fā)人員都比較熟悉FOX系列的軟件,因此在此基礎(chǔ)上掌握VFP開發(fā)C/S結(jié)構(gòu)的MIS系統(tǒng),對于這些人來講加快了開發(fā)進程,延續(xù)了知識的生命周期。因此我想把自己用VFP開發(fā)C/S系統(tǒng)中的方法和經(jīng)驗寫出來,好讓那些對VFP不太了解或者沒有用它開發(fā)過C/S結(jié)構(gòu)的讀者對VFP有重新的認識。一.建立數(shù)據(jù)庫、建立ODBC數(shù)據(jù)源主從結(jié)構(gòu)最大的優(yōu)點就是將工作合理分配于服務器與工作站以便讓它們同時發(fā)揮所長,主從結(jié)構(gòu)包括三個重要的部分-網(wǎng)絡操作系統(tǒng)、數(shù)據(jù)庫服務器及前端應用程序。我們可以采用VisualFoxPro+SQLServer7.0+WindowsNTServer的組合方式。我們首先需在SQLServer上建立所需的數(shù)據(jù)庫如:Ningguo,并創(chuàng)建所需要的表,如maintable等。在SQLServer上的數(shù)據(jù)庫建完之后,我們可以為剛才創(chuàng)建的數(shù)據(jù)庫創(chuàng)建一個用戶如:newguest,這樣我們就可以進行下一步操作。在前臺的工作站上,操作系統(tǒng)采用Window98/95即可,在工作站建立連接到SQLServer的ODBC數(shù)據(jù)來源(DataSource)。我們新建了一個數(shù)據(jù)源first,連接到SQLServer上的Ningguo數(shù)據(jù)庫。二.建立和數(shù)據(jù)庫相連的連接下面我們就進入與VisualFoxpro相關(guān)的部分。在以VisualFoxpro所開發(fā)的主從結(jié)構(gòu)中,遠程視圖(RemoteView)扮演著關(guān)鍵性的角色。遠程視圖使得程序設計師能夠?qū)F(xiàn)有的技術(shù)直接應用于主從結(jié)構(gòu)系統(tǒng)的開發(fā)上,而無須增加太多的負擔。當我們想要在VisualFoxpro中存取其他數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)紀錄時,便必須借助于遠程視圖。在建立一個遠程視圖之前,必須在數(shù)據(jù)庫中建立一個連接(Connection),它記錄了登入SQLServer的相關(guān)信息并定義連接通道的一些設定信息。在數(shù)據(jù)庫設計器中新建一個連接,分別在數(shù)據(jù)源、用戶標識、密碼、數(shù)據(jù)庫所對應的輸入框中輸入如前文所述的名稱,然后驗證連接即可,當然也可以用連接串連接,如:dsn=first;uid=newguest;pwd=123;database=ningguo,或許在某些情況下,我們在應用系統(tǒng)執(zhí)行期間以程序控制方式更改連接的相關(guān)設定,我們就可以用DBSETPROP()函數(shù),比如我們要更改名為connect1的連接串,可用如下的命令敘述:OPENDATABASEtestdbsetprop("connect1","connection","connectstring",;"dsn=first;uid=newguest;pwd=123;database=ningguo")三.建立遠程視圖在連接成功的情況下,我們就可以建立遠程視圖。我們既可以在數(shù)據(jù)庫設計器中用視圖向?qū)Ы⒁晥D,也可以用命令來建立視圖。下面以向?qū)槔齺磉M行說明,在向?qū)е形覀兛梢允褂脭?shù)據(jù)源或者連接來創(chuàng)建視圖,一般而言,讓遠程視圖透過已定義的連接來連接到所需的數(shù)據(jù)來源較好,因為連接本身就包含較完整的連接定義信息,而用數(shù)據(jù)源則每次使用遠程視圖時便會出現(xiàn)SQLServerLogin對話框,顯然這是用戶所不希望看到的。接著選擇視圖所對應的SQLServer中的來源表即可。我們就視圖所需要的字段、聯(lián)接條件、篩選條件、排序、分組、更新條件應分別進行設置,以滿足我們的需要,要提到的是前后端的數(shù)據(jù)類型對應的問題,VisualFoxpro中的數(shù)據(jù)類型與SQLServer中的數(shù)據(jù)類型不盡相同,不過前后端的數(shù)據(jù)類型有一固定的關(guān)系。比如,某一個字段在SQLServer上的數(shù)據(jù)類型是money,而在遠程視圖中此字段的數(shù)據(jù)類型將是貨幣值類型,又例如,某一個字段在SQLServer上的數(shù)據(jù)類型是text,而在遠程視圖之中此字段的數(shù)據(jù)類型將是備注型,我們往往需要手動去調(diào)節(jié)對應的字段類型,例如,所有的SQLServer上的datetime類型到了遠程視圖中都要變成date型。我們可以在相應的頁面來確定聯(lián)接關(guān)系、指定過濾條件、指定排序依據(jù),特別要注意的是在"更新頁面"欄,如果我們想要建立一個可更新的視圖,必須選中"發(fā)送SQL更新"欄,這樣針對視圖所作的任何變動,會主動反映到后端的SQLServer中去,你就可以直接使用所熟悉的VisualFoxpro來更新后端數(shù)據(jù)。另外,我們指定鍵值欄、可更新字段、更新沖突的檢查方式以及后端的SQLServer如何執(zhí)行更新操作,視圖的建立就完成了。遠程視圖一旦建立完成,我們就可以利用它來顯示與更新數(shù)據(jù)。由于遠程視圖在外觀與使用上皆與表大同小異,因此即使其來源數(shù)據(jù)實際上是位于SQLServer中,我們無須有任何顧慮,過去替VisualFoxpro本身的數(shù)據(jù)建立平行輸出/入界面、報表及標簽的方法完全適用于遠程視圖。我們可以在表單設計工具、報表設計工具與標簽設計工具中,將遠程視圖加至表單、報表或標簽的數(shù)據(jù)環(huán)境組件中,并快速建立出數(shù)據(jù)源為遠程視圖或其某字段的控制項。但是在實際應用中,我們往往會遇到這樣的情況,如符合條件的數(shù)據(jù)紀錄很多,或者經(jīng)常要使用離線方式的系統(tǒng),我們除了簡單的使用遠程視圖之外,還必須靈活的運用"有條件的遠程視圖"和離線式視圖(Off-lineView),盡量減少服務器端的數(shù)據(jù)下載量,減輕網(wǎng)絡的負荷,一些不常更新的數(shù)據(jù)甚至可以以DBF的形式直接放置在客戶端,提高整個系統(tǒng)的運行效率。四.SQLPass-Through(SPT)技術(shù)的運用要使一個主從結(jié)構(gòu)系統(tǒng)趨于完善,除了用遠程視圖來構(gòu)筑主從結(jié)構(gòu)的主體,還必須輔以SQLPass-Through技術(shù)。所謂SQLPass-Through,意指我們可以將任何符合SQLServer語法的命令敘述從前端透過連接通道送至后端的SQLServer來執(zhí)行,與SQLServer進行其他直接有效的溝通。利用SQLPass-Through我們還可以直接去執(zhí)行儲存在SQLServer上的儲存式程序(StoredProcedure),和系統(tǒng)儲存式程序(SystemStoredProcedure),比方說,我們可以從前端去執(zhí)行SQLServer的系統(tǒng)儲存式程序sp_addlogin,來要求加入一個使用者帳號。一般而言,SPT函數(shù)的使用流程如下所示:(1)首先使用SQLCONNECT()或SQLSTRINGCONNECT()函數(shù)來連接值所需的數(shù)據(jù)源。(2)成功的連接到SQLServer之后,即可以透過連接通道進行所需的各項處理。比如,我們可以使用SQLEXEC()函數(shù)將SQL命令送至SQLServer執(zhí)行。(3)完成所有的操作后,應用SQLDISCONNECT()函數(shù)切斷與數(shù)據(jù)源的連接。下面我們就舉一個典型的運用SQLPass-Through的例子:SETTALKOFFCLEARALLCLOSEALLSQLSETPROP(0,"DispLogin",3)&&登錄失敗時不顯示ODBC登錄對話框nConnectHandle=SQLSTRINGCONNECT("dsn=first;uid=newguest;pwd=123;database=ningguo")IFnConnectHandle<0MessageBox("無法與數(shù)據(jù)庫連接",0+48,"異常情況")ELSEMessageBox("連接成功",0+48,"提示信息")SQLEXEC(nConnectHandle,"Select*frommaintable")BrowseUseinsqlresult………..&&其他操作SQLDISCONNECT(nConnectHandle)&&切斷連接ENDIF通過這樣簡單有效的代碼,我們就能對數(shù)據(jù)庫進行有效的操作,以確保數(shù)據(jù)的完整性和安全性。在此列出所有的SQLPass-Through函數(shù)供大家參考:(1)連接建立與切斷SQLCONNECT()SQLSTRINGCONNECT()SQLDISCONNECT()(2)SQL命令敘述的執(zhí)行與控制SQLCANCEL()SQLEXEC()SQLMORERESULTS()SQLPREPARE()SQLCOMMIT()SQLROLLBACK()(3)數(shù)據(jù)來源信息SQLCOLUMNS()SQLTABLES()(4)存取連接通道的屬性SQLGETPROP()SQLSETPROP()在用SQLPass-Through時,程序設計師能夠擁有較高的主導權(quán)與控制權(quán),因此若能夠?qū)⑦h程視圖和SQLPass-Through技術(shù)緊密的結(jié)合起來,互補有無,我們的主從系統(tǒng)就可以無所不能了。五.結(jié)束語可以說,VisualFoxpro是一個相當不錯的開發(fā)基于C/S結(jié)構(gòu)的數(shù)據(jù)庫應用系統(tǒng)的前端軟件,在Internet廣為流傳的今天,最新一代的系統(tǒng)結(jié)構(gòu)早就已發(fā)展至N-tier結(jié)構(gòu),亦即我們所說的多階層結(jié)構(gòu)。N-

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論