




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、新的集成開發(fā)環(huán)境數(shù)據(jù)瀏覽器(DataExplorer)數(shù)據(jù)瀏覽器(DataExplorer)眾所周知,VisualFoxPro有很強的數(shù)據(jù)操控功能。VisualFoxPro9將這種功能在客戶端/服務器模式(C/S模式)的開發(fā)環(huán)境下表現(xiàn)得淋漓致盡。 它新增了一個名為數(shù)據(jù)瀏覽器的工具讓基于C/S模式的開發(fā)變得更方便。數(shù)據(jù)瀏覽器是一個新工具,你可以在任務面板管理器中找到它,要激活數(shù)據(jù)瀏覽器,你先要從VisualFoxPro的“tool菜單中打開任務面板管理器,然后單擊任務面板管理器中的“按鈕,這樣會彈出一些未顯示的面板列表(參見圖5),然后單擊“DataExplore頊:圖5.通過單擊“喉鈕可以彈出
2、更多的面板列表現(xiàn)在你就可以通過它連接到外部數(shù)據(jù)庫,并在你的計算機上瀏覽遠程數(shù)據(jù)庫了。圖 6 展示了用數(shù)據(jù)瀏覽器來分析一個名為“Maste 散據(jù)庫的詳細信息你可以在圖 6 中相應的數(shù)據(jù)表上單擊右鍵,并單擊彈出的快捷菜單中的“RunQuery 項來查詢這個表中的記錄。這時會打開一個新的對話框(參見圖 7),你可以在這個對話框中輸入 SQL 語句來執(zhí)行查詢。圖6.用數(shù)據(jù)瀏覽器來顯示Master數(shù)據(jù)庫的詳細信息KunQueryI.KunQueryI.叵NamNam導NumberTypNumberTyp LowLowT.iiT.ii二匕:r r卜rpe1ANULLNULLNULL0pub1ANULLNU
3、LLNULL.0sub4ANULLNULLNULL.0di&tQANULLANULLNULL0dpub18ANULLdpub18ANULL.NULL0Ifptout64A.NULL.NULL.NULL.0卜匕54549MSQlfifrELfci9MSQlfifrELfci圖7.查詢對話框可以用來輸入SQL語句,并顯示查詢結果數(shù)據(jù)瀏覽器在以前的 VisualFoxPro 版本中就非常需要, 感謝 Microsoft 公司終于在版本 9 中加入了這項功能。方便的代碼查錯VisualFoxPro9 對它的程序編輯窗口也彳了很大的增強。 當 FoxPro 在代碼中發(fā)現(xiàn)一處語法錯誤時,它會為相應
4、代碼畫上下劃線。這節(jié)約了開發(fā)者的糾正 BUG 的時間,并且不必非要等到編譯完成才發(fā)現(xiàn)錯誤。VFP9 的 IDE=更高的效率盡管本文描述的新增功能不是太多,但 VisualFoxPro9 的集成開發(fā)環(huán)境確實進步了不少。改進后的程序編輯窗口讓你的源代碼中的 BUG 更少,方便的字體設置能讓你的項目更一目了然,并且新增加的數(shù)據(jù)瀏覽器讓 C/S 開發(fā)變得更簡單。VisualFoxPro9中新的數(shù)據(jù)處理方式(2)更好的關聯(lián)支持新版本中的UPDATE語句和DELETE語句支持關聯(lián)。這樣,一條語句可以引用不同的表,如下所示:DELETEproducts;FROMmfg;WHEREductID=
5、ductID;ANDmfg.discontinued=.t.這個 DELETE 語句刪除 mfg 表中所有不再生產(chǎn)的產(chǎn)品。另一個關聯(lián) UPDATE 語句示例如下:UPDATEproducts;SETunitprice=mfg.msrp*.90;FROMmfg;WHEREductID=ductID這條 UPDATE 語句將零售產(chǎn)品的價格打了九折。可能你會問:它支持子查詢嗎?當然支持。但使用的時候要格外小心。因為如果子查詢沒有返回任何記錄,那將會返回一個值為 NULL 的空記錄。而這恰恰不是你所希望得到的結果。如下所示:UPDATEpr
6、oducts;SETunitprice=;(SELECT(msrp*.90);FROMmfg;WHEREductID=ductID)這條 UPDATE 語句的作用與上條基本相似,但如果子查詢中的產(chǎn)品沒有找到的話,那unitprice 將被置為 NULL。視圖與查詢設計器盡管新版本增強了子查詢功能,但不幸的是在視圖與查詢設計器中并不支持這種增強功能。并且由于 SQL 中的 IN 子句中的元素數(shù)目取消了硬編碼的限制,但視圖與查詢設計器中并不知道,因此如果你使用設計器,那 IN 子句還是只支持 24 個元素。增強的 UNION 操作符由于聯(lián)結的數(shù)量沒有了硬編碼的
7、限制,你可以在 INSERTINTO 子句的結果集中使用 UNIONo 也可以在使用 UNION 的同時使用 ORDERBY 子句。性能不管你是訪問遠程數(shù)據(jù)還是依賴于它強大的本地數(shù)據(jù)庫引擎, VisualFoxPro 始終將性能考慮在第一位。VisualFoxPro9 進一步地增強了數(shù)據(jù)引擎的功能。二進制索引這種新型的索引使用方法如下:INDEXONDELETED()TAGDELETEDBINARY這種索引能與任何非空的邏輯表達式一起使用。除此之外,F(xiàn)OR 表達式、ASCENDING、DESCENDING、UNIQUE 或 CANDIDATE 關鍵字不能與它一起使用。二進制索引并不支持 SET
8、ORDERTO 命令, 而且 INDEXON 命令會將當前的 order 設為 0。 但你可在 Seek語句中使用二進制索引。二進制索引最大的優(yōu)勢在于它的索引文件大小。以一個包含 800 萬條記錄的表為例,它的二進制索引文件的大小差不多為表大小的三十分之一。尺寸越小意味著在執(zhí)行 APPEND 和REPLACE 操作時 I/O 處理速度越快,但遺憾的是所有的 Rushmore 優(yōu)化技術目前都還不支持二進制索引。如果 SQL 語句返回的記錄起過表中總記錄的三分之一的話,那 Rushmore 將得到很好的發(fā)揮(當所有的記錄都命中的話會提高 92%的速度) 。 如果 SQL 語句返回的記錄低于總記錄的
9、三分之一, 那 Rushmore將變得很慢(如果沒有記錄命中的話會降低兩倍的速度)。在 VisualFoxPro9 中,將 DELETE 語句設置為二進制索引是一種增強性能的簡單方法。但要注意版本的問題,因為以前的版本并不支持這種新的索引方式。Rushmore 優(yōu)化技術新版本中有使用了大量的 Rushmore 優(yōu)化技術,例如對 TOPNPERCENT作了優(yōu)化,這樣便能提供更好的性能。它一般與 ORDERBY 子句配合使用,返回前 N 個或者前百分比數(shù)目的記錄。在 VisaulFoxPro9 中它減少了內排序操作和文件 I/O 操作,使得執(zhí)行這種類型的語句占用更少的內存,并且正如此語句所言,它只
10、返回確切的前 N 個記錄。在以前的版本中,如果要統(tǒng)計一個班級總分排在前十名的學生,但中間存在并列名次的話,那結果會返回多于 10 個的記錄。在適當?shù)?,f#況下,VisualFoxPro9 將在 FORDELETED()子句和 FORNOTDELETED()子句中使用過濾索引來對 MIN()和 MAX()這兩個聚集函數(shù)進行優(yōu)化,可以提高 MIN()和 MAX()的計算速度。如果 LIKE 模糊查詢語句中的條件以“為結尾,那查詢速度也將得到很大提高(請注意,“%只能出現(xiàn)在查詢條件的結尾,而不能出現(xiàn)在其它地方,否則優(yōu)化無效)。這種優(yōu)化的結果等同于普通 WHERE 子句查詢的速度。更多的智能索引技術V
11、isualFoxPro9 比以前的版本更智能化,它充分地讓索引獲得 Rushmore 的優(yōu)化技術,如下所示:INDEXONDELETED()TAGDELETED以上語句自動對 NOTDELETED()和 DELETED()條件進行優(yōu)化,不用你添加一條 INDEXONNOTDELETED()來實現(xiàn)。這里有個特例,就是當索引過過濾表達式采用了 FORNOTDELETED()作為 Rushmore 的優(yōu)化,并且SETDELETED 設為 ON 的話,那就無須為 NOTDELETED()作優(yōu)化新的數(shù)據(jù)處理方式VisualFoxPro9中新的數(shù)據(jù)處理方式命令和函數(shù)一些新的命令和函數(shù)得到擴展,能夠更好地控
12、制 VisualFoxPro 將讀取或寫入數(shù)據(jù)到磁盤中去。數(shù)據(jù)訪問與提交的細粒度控制在 VisualFoxPro 中,SETREFRESH 命令后的第二個參數(shù)控制當前內存中數(shù)據(jù)刷新到磁盤中的間隔時間,原來的版本只能以整數(shù)作為最小單位,但現(xiàn)在可以為小數(shù)。你還可以將它指定為 71”,這樣可以強迫 VisualFoxPro 每次只從硬盤中讀取數(shù)據(jù),從而降低數(shù)據(jù)丟失的風險,并且這個時間的最小值可以設為“.001?!比绻銓⑦@個值設得過低的話,可能會降低性能,特別是當請求增多,或是跨網(wǎng)絡存取數(shù)據(jù)庫時尤其如此,因此要小心謹慎地使用它。SYS(1104)函數(shù)用來清理程序與數(shù)據(jù)的內存緩沖區(qū),以及數(shù)據(jù)表的緩沖區(qū)
13、。在 VisualFoxPro9 中,SYS(1104)的第二個參數(shù)用來指定要清理的工作區(qū)或者別名,當一個應用打開了很多表時,如果調用SYS(1104),那清理所有的表緩沖區(qū)將會很耗時,有了這樣的一個參數(shù)可以對它進行更好的控制,從而加快系統(tǒng)的響應速度。FLUSH 命令系列可以將對于表、索引、文件的的有修改全部回寫到磁盤中去,在 VisualFoxPro9 中,F(xiàn)LUSH 命令被擴展為兩個步驟:先指定要刷新的區(qū)域,然后調用 FlushFileBuffers 函數(shù)進行刷新。盡管你可以通過指定要刷新的文件名、工作區(qū)或者表的別名來精細地控制回寫的粒度,但有時VisualFoxPro9 回寫數(shù)據(jù)到磁盤后
14、,操作系統(tǒng)仍然不會真正地回寫,而是將它繼續(xù)保留在系統(tǒng)緩沖區(qū)中,這時你可以用 FORCE 關鍵字強制將系統(tǒng)緩沖區(qū)的內容回寫到磁盤中。以下是 FLUSH 命令的一些用法:FLUSHc:datacustomers.dbfFLUSHc:datacustomers.dbfFORCEFLUSHIN1FORCEFLUSHINcustomerFORCEFLUSHc:test.txtFORCEFLUSHFORCE在以前的版本中,如果你使用 SELECT 語句的話,那么數(shù)據(jù)全部將從磁盤中取得。這意味著如果你想查詢一些保存在表緩沖區(qū)中的未回寫的數(shù)據(jù)的話,你必須編寫一個額外的過程來完成這個功能?,F(xiàn)在的版本通過使用 S
15、ETSQLBUFFERING 和 SELECT.WITH(Buffering=表達式)使得你可以方便地控制數(shù)據(jù)到底是從磁盤中取得還是從表緩沖區(qū)中獲得,如下所示:SELECT*FROMCustomerWITH(BUFFERING=.t.)SELECT*FROMOrdersWITH(BUFFERING=lUseBuffer)SELECTDISTINCTc.city,o.shipcity;FROMcustomersCWITH(BUFFERING=.T.);JOINordersOWITH(BUFFERING=.T.);ONc.customerID=o.customerID請注意每個表都要給出一個相應的
16、 WITHBUFFERING 子句,如果不指定的話,VisualFoxPro9 將使用SETSQLBUFFERING 中指定的值(缺省為.f.)。這是要提醒你的是只有 VisualFoxPro9 本地數(shù)據(jù)才支持緩沖,如果你使用其他的諸如 SQLServer 等后端數(shù)據(jù)庫做為數(shù)據(jù)源的話則存在緩沖管理。CAST()函數(shù)新的 CAST()函數(shù)模仿的是 SQLServer 的一個同名函數(shù)。 它可以在 SQL 語句中使用, 也可以在普通命令中使用。如果在 SQL 語句中使用它的話,那你的 SQL 代碼更遵循于 TSQL 規(guī)范。正如它的名字所指示的那樣,這個函數(shù)將一個數(shù)據(jù)類型轉化為另一個數(shù)據(jù)類型。SQL
17、語句中使用 CAST()函數(shù)的語法如下:SELECTCustomerID,;CAST(nAmount*nRateASN(8,2);FROMSALESSELECTCustomerID,;CAST(nAmount*nRateASBNOTNULL);FROMSALESSELECTCustomerID,;CAST(nAmount*nRateASC(10);FROMSALESSELECTfoo.*,;CAST(NULLasI)ASIntegerField;FROMfooICASE()函數(shù)另一個名為 ICASE()的函數(shù)模仿了 TSQL 的 CASE 分支。它有點類似于 IIF()函數(shù),但它的有價值之處在
18、于它不像 IIF()函數(shù)那樣會形成丑陋并且冗長的代碼。ICASE()函數(shù)需要指定相應的條件/結果繆數(shù)對才能工作。第一個參數(shù)是條件表達式,如果條件表達式為 True 的話,那第二個參數(shù)就會執(zhí)行;如果條件表達式為 False 的話,那第二個參數(shù)就會被忽略,轉而執(zhí)行下一個條件/結果參數(shù)對。如果參數(shù)配對錯誤,那么系統(tǒng)會報#11 錯誤。以下是 ICASE()函數(shù)的使用示例:nHour=HOUR(DATETIME()?ICASE(nHour=8,breakfast,;ICASE()中最多能允許 100 個條件/結果參數(shù)對。SYS(3092):輸出到文件這個新的 SYS()函數(shù)要與 SYS(3054)函數(shù)一
19、起協(xié)同工作,你可以用 SYS(3092)函數(shù)為 SYS(3054)函數(shù)的輸出指定一個文件名,于是結果將輸出到這個指定文件中去。以下示例解釋了如何將這兩個函數(shù)結合使用:SYS(3054,12,dummyVar)SYS(3092,ShowPlan.txt)OPENDATABASEHOME(2)+“NorthwindNorthwindSELECT*;FROMCustomersINTOCURSORtempiSELECT*;FROMsummary_of_sales_by_year;INTOCURSORtemp2SYS(3092,)CLOSEDATAALLMODIFYFILEShowplan.txtNOW
20、AIT如果你在 SYS(3054)的第三個參數(shù)不指定具體的變量名,那結果將輸出到當前的窗口中去。VisualFoxPro9中新的數(shù)據(jù)處理方式新的數(shù)據(jù)類型為了更好地與 SQLServer 兼容,VisualFoxPro9 增加了三個新數(shù)據(jù)類型:VarChar、VarBinary 和 BLOB。這些數(shù)據(jù)類型可以在本地數(shù)據(jù)庫中作為字段類型,也可由 CAST()函數(shù)創(chuàng)建或者由遠程數(shù)據(jù)取得。VarChar它是一種字符型數(shù)據(jù)類型,但不像普通字符串那樣長度不夠的時候會以空格被補齊,而是將其截取。這有點類似于 SQLServer 中的 SETANSI_PADDINGON 命令。如果 VarChar 中本身有空
21、格的話則不會被截取。假如在一個表達式中將 VarChar 和 Character 兩種數(shù)據(jù)類型混合計算,那結果會是 VarChar 類型。VarChar 在 VisualFoxPro 中是一個定長域,它的最大長度限定為 255 個字符。但在 SQLServer 中,一個 VarChar 域的最大長度可以達到 8060 字節(jié)。VarBinaryVarBinary 與 VarChar 有些類似,如果沒有達到最大長度的話,多余的域不會被填充,而是被截取。但它們的本質區(qū)別在于 FoxPro 不會為 VarBinary 類型作任何代碼頁的轉換。以下是這兩種數(shù)據(jù)類型的比較:BinaryDatacompar
22、ison-SETCOLLATETOMACHINE-SETCOLLATETOMACHINEmETEXACT*6F?mETEXACT*6F? prepre9i9i ACsCQ=CC=QQs-QACsCQ=CC=QQs-QabcabcM MH abcabc bebe = = ibeibeH HFbe=Fbe=N N bcbc=JiBC=JiBC*JL&C*JL&C”- -M MibcibcH HT TT TF FF FF FT TT TF FF FF FT TT TF F. .F F. .F FT TT TF FF FF F-SETCOLLATETOMACHINESETEXACTON
23、-SETCOLLATETOMACHINESETEXACTONflxproESiOFiC=CQ=CC=QQ=QflxproESiOFiC=CQ=CC=QQ=Q*SETCOLLATETOfiTNEHALSETEXACTOU*SETCOLLATETOfiTNEHALSETEXACTOU4xprvs5ionCHQ=CC=Q(J=Q4xprvs5ionCHQ=CC=Q(J=QT TF FF FF FF FG Ga aT TF FF FT TF FF FF FF FT TT TT TF F. .F Fs sa a總4 4A Aa aFk-t時M M_ _ 9 9s s2 2s s鎮(zhèn)鵑己1 1a aA AE
24、 E! !? ?f fE EM MT TF FF FF FF Fr, ,T T, ,T T, ,T T, ,T T. .T T丁F FF FF FF FH Hb be e , ,隆k ka aa aA A = =- -2 21 1- -M.a aaA-AAaA-AA。TTFTTFFFFF_vn!ai_vn!aiTTTT- -,TT,F,TT,FQTQT-TTF-TTFFFFF- -TTFTTFT.TT.TSnipSnip中imtsnmieaimtsnmieaiypiyp 0n5ftFolding0n5ftFolding,,,BinaryCHK(O)BinaryCHK(O)G 單工電CXCECH
25、R.fCHR.fBLOBBLOB 數(shù)據(jù)類型沒有固定的長度限制,與 Memo 類型有些相似。它被存儲在以.FPT 結尾的文件中,被.DBF 文件引用。BLOB 字段與 Memo 字段有相同的限定條件,并且他們都不支持索引。與 VarBinary 數(shù)據(jù)類型一樣,VisualFoxPro9 不會將 BLOB 類型作代碼頁轉換,而是保持它原始的二進制格式。BLOB 數(shù)據(jù)類型的設計意圖旨在取代最初的 Gerneral 字段。 如果圖形或者其它一些媒體類型以 BLOB的格式存儲,可用 Image 控件的 PictureVal 屬性對它們進行瀏覽。MEMO 與 BLOB 類型的數(shù)據(jù)不能直接修改,如果直接修改
26、的話,那只會顯示它們的 16 進制的映像。在以前的版本中,VisualFoxPro 在建表語句 CREATETABLE 創(chuàng)建字段類型時,一般用字段名稱的第一個字母來取代。但隨著數(shù)據(jù)類型的增多,像 Character 和 Currency 這兩種字段類型如果采用第一個字母的簡寫方式的話會導致同名沖突?,F(xiàn)在的版本可以同時支持字段類型的全稱、全稱的簡寫、第一個大寫字母等多種方式,表 1 列出了所有的數(shù)據(jù)類型。表 1:下面是 FoxPro 所有的數(shù)據(jù)類型的全稱和字母縮寫。數(shù)據(jù)類型全稱字母縮寫CharacterChar,CharacterCDateDateDDateTimeDatetimeTNumeri
27、cNum,NumberNFloatingFloatFIntegernt,IntegerIDoubleDoubleBCurrencyCurrencyYLogicalLogicalLMemoMemoMGeneralGeneralGPicturePicturePAlwAlw ytytSETCOLLATEdHpendeRtSETCOLLATEdHpendeRtVarCharVarcharVVarBinaryVarbinaryQBLOBBlobW與新引進的二進制索引一樣,如果要使用新版本中的數(shù)據(jù)類型,那你必須升級到FoxPro9。否則就不能使用這些新的數(shù)據(jù)類型VisualFoxPro9中新的數(shù)據(jù)處理方式
28、(5)遠程數(shù)據(jù)VisualFoxPro以前的版本對遠程數(shù)據(jù)有很強大的支持,但新版本中為操作及取得遠程數(shù)據(jù)提供了更強大的控制功能。事務和連接一個名為DisconnectRoolBack的新屬性被加入到了新版本,當事務處于掛起狀態(tài)或連接斷開時可以用它來將事務回滾。SQLSetProp、SQLGetProp、DBSetProp和DBGetProp函數(shù)都支持這個新屬性。SQLIdleDisconnect()是一個新增加的函數(shù),它可用來臨時地終斷一個連接。在大多數(shù)情況下, 它通過一個IdleTimeOut的屬性來控制連接超時的時間。 但在多線程運行環(huán)境中是不允許線程處于空閑狀態(tài)的, 在這種情況下調用此函數(shù)將真正釋放這個連接。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國液位測量控制器數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國海蠣干數(shù)據(jù)監(jiān)測研究報告
- 在線課程合同履約金約定
- 商品采購審查協(xié)議
- 2025至2030年中國水溶劑切削油劑數(shù)據(jù)監(jiān)測研究報告
- 2024年通遼奈曼旗人民醫(yī)院招聘醫(yī)務人員考試真題
- 磁頭產(chǎn)品技術培訓與操作實踐能力培養(yǎng)
- 2024年青島市市屬事業(yè)單位招聘考試真題
- 2024年河南鄭州航空港科創(chuàng)投資集團社會招聘筆試真題
- 合作伙伴協(xié)議與員工合同
- SH∕T 3097-2017 石油化工靜電接地設計規(guī)范
- 北京市城市建設節(jié)約用地標準
- 開學第一課我們開學啦主題班會PPT課件(帶內容)
- 電源線檢驗報告RVV
- 體育訓練隊隊規(guī)
- 八字命理漫畫版
- 電梯工程開工報告(直梯)(共1頁)
- 五年級第二學期體育知識結構圖
- 復件德力西質量獎自評報告2戰(zhàn)略
- 自主改善的活動方案
- 部編版三年級下冊第八單元教材解讀
評論
0/150
提交評論