申報(bào)要素查詢查詢要素_第1頁(yè)
申報(bào)要素查詢查詢要素_第2頁(yè)
申報(bào)要素查詢查詢要素_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、申報(bào)要素查詢:查詢要素瘋狂代碼 HYPERLINK http:/CrazyC/http:/CrazyC/j:http:/CrazyC/BlogDigest/Article75704.html使用過(guò)關(guān)系數(shù)據(jù)庫(kù)的人一般都非常熟悉SQL語(yǔ)句,它使用Select語(yǔ)句對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢,Select語(yǔ)句可以發(fā)分為兩大類(lèi):非聚合類(lèi)查詢語(yǔ)句和聚合類(lèi)查詢語(yǔ)句。上面例子中的第一條SELECT語(yǔ)句是一條非聚合類(lèi)查詢語(yǔ)句,用于選擇“成績(jī)表”中“學(xué)號(hào)=100and學(xué)號(hào)=100and學(xué)號(hào)=20”定義了一個(gè)過(guò)濾條件選擇所有FEATID”屬性大于20的要素。2);空間過(guò)濾器空間過(guò)濾器使用一個(gè)關(guān)聯(lián)與兩個(gè)幾何圖形的空間操作符定義

2、一個(gè)過(guò)濾條件,它通常作為MgFeatureQueryOption:SetSpatialFilter(.J或MgFeatureAggregateOptions:SetSpatialFilter(.J方法的參數(shù)。該方法的原型如下所示,參數(shù)geometryProperty用于指定要素類(lèi)中幾何屬性的名稱(chēng),geometry用于指定一個(gè)幾何對(duì)象,參數(shù)spatialOperation用于指定一個(gè)空間操作符。假設(shè)操作符是MgFeatureSpatialOperations:Within,幾何對(duì)象的WKT表示為POLYGON(00,20,22,02,00),那么此過(guò)濾條件的效果是選擇在多邊形內(nèi)部的所有要素。類(lèi)M

3、gFeatureSpatialOperations定義了MapGudie支持的空間操作符,它們的含義請(qǐng)參考空間關(guān)系。l;MgFeatureSpatialOperations:Containsl;MgFeatureSpatialOperations:CoveredByl;MgFeatureSpatialOperations:Crossesl;MgFeatureSpatialOperations:Disjointl;MgFeatureSpatialOperations:EnvelopeIntersectsl;MgFeatureSpatialOperations:Equalsl;MgFeatureS

4、patialOperations:Insidel;MgFeatureSpatialOperations:Intersectsl;MgFeatureSpatialOperations:Overlapsl;MgFeatureSpatialOperations:Touchesl;MgFeatureSpatialOperations:Within3);組合過(guò)濾器通過(guò)調(diào)用方法MgFeatureQueryOption:SetBinaryOperator(.J可以使用邏輯操作符AND或OR將基本過(guò)濾器和空間過(guò)濾器組合在一起,參數(shù)andOr的值為T(mén)RUE表示使用AND邏輯操作符,FALSE表示使用OR邏輯操作

5、符,該方法只有在基本過(guò)濾器和空間過(guò)濾器設(shè)置的情況下才會(huì)發(fā)揮作用。如果設(shè)置了基本過(guò)濾器和空間過(guò)濾器,卻沒(méi)有調(diào)用此方法,那么使用AND操作符組合基本過(guò)濾器和空間過(guò)濾器。過(guò)濾器的BNF語(yǔ)法如下所示,從中可以看到表達(dá)式是過(guò)濾器的重要組成部分,表達(dá)式支持的數(shù)據(jù)類(lèi)型如表8-4所示,可以使用部分函數(shù)如表8-5所示。;表8-4表達(dá)式支持的數(shù)據(jù)類(lèi)型;表8-5表達(dá)式中可以使用的部分函數(shù);表達(dá)式中的一些函數(shù)可以使用單個(gè)要素的屬性值作為參數(shù),返回一個(gè)和此屬性值相關(guān)的值,例如ceil、floor、coneat和upper等,這些函數(shù)可以使用于非聚合類(lèi)和聚合類(lèi)查詢;一些函數(shù)可以將多個(gè)要素的屬性值作為參數(shù),返回一個(gè)和一組屬

6、性值相關(guān)的值,例如avg、count、max、min、stddev和sum等,這些函數(shù)只能使用于聚合類(lèi)查詢。下面是一些表達(dá)式的例子,以及如何使用這些表達(dá)式進(jìn)行查詢。1);NULL給定一個(gè)字符串類(lèi)型的屬性Name,如果它的屬性允許為NULL,并且在插入一個(gè)要素時(shí)沒(méi)有指定此屬性的值,那么這個(gè)要素Name屬性的值為NULL。通過(guò)應(yīng)用過(guò)濾條件NameNULL”,可以選擇所有Name屬性值為NULL的所有要素。通過(guò)應(yīng)用過(guò)濾條件NOTNameNULL,可以選擇所有Name屬性值不為NULL的所有要素。2);LIKELike可以用于實(shí)現(xiàn)模糊查詢,給定一個(gè)字符串模式(Patern),可以使用Like查找所有符

7、合指定模式的要素。其中,百分號(hào)”用于匹配0個(gè)或多個(gè)字符,下劃線_”用于匹配單個(gè)字符。假設(shè)Description是一個(gè)字符串類(lèi)型的屬性,數(shù)據(jù)源中有兩個(gè)包含了此屬性的要素,這兩個(gè)屬性的值為PointData”和“PolygonData”,過(guò)濾條件“DescriptionLIKE卩olygon返回PolygonData”,過(guò)濾條件NOTDescriptionLIKE卩olygon返回PointData,過(guò)濾條件DescriptionLIKE卩ol_gon返回PolygonData”3);IN()IN操作符用于選擇與列表中的任意一個(gè)值匹配的要素,給定一個(gè)Int16類(lèi)型的屬性Id,過(guò)濾條件IdIN(-5

8、995,-7033)”選擇Id屬性值等于-5995或-7033的要素。;排序調(diào)用MgQueryOptions:SetOrderingFilter(.J可以將查詢結(jié)果進(jìn)行排序,該方法的簽名如下所示,參數(shù)orderByProperties是一個(gè)屬性名稱(chēng)的集合,用于指定排序的屬性,如果指定了多個(gè)屬性,那么優(yōu)先使用orderByProperties中序號(hào)較小的屬性,只有在序號(hào)較小的屬性具有相同的值時(shí),才使用序號(hào)較大的屬性;參數(shù)orderOption用于指定是以升序的方式還是降序的方式進(jìn)行排序,它的值可以為MgOrderingOption:Ascending或MgOrderingOption:Desce

9、nding,分別用于表示升序和降序。;分組調(diào)用MgFeatureAggregateOptions:SetGroupingFilter(.J可以將查詢結(jié)果進(jìn)行分組,該方法的簽名如下所示,參數(shù)groupByProperties是一個(gè)屬性名稱(chēng)的集合,用于指定分組的屬性,如果指定了多個(gè)屬性,那么優(yōu)先使用orderByProperties中序號(hào)較小的屬性,只有在序號(hào)較小的屬性具有相同的值時(shí),才使用序號(hào)較大的屬性;參數(shù)groupFilter用于指定分組的過(guò)濾器。如下的代碼展示了如何使用分組創(chuàng)建一個(gè)聚合類(lèi)查詢。上面代碼的功能類(lèi)似于如下的SQL語(yǔ)句。;MgDataReader、MgFeatureReader和

10、IMgSqlDataReaderMapGuide支持三種類(lèi)型的讀取器,它們分別為MgDataReader、MgSqlDataReader和MgFeatureReader,讀取器的類(lèi)型由類(lèi)MgReaderType定義。I;MgReaderType:DataReaderl;MgReaderType:FeatureReaderl;MgReaderType:SqIDataReader類(lèi)MgDataReader、MgSqlDataReader和MgFeatureReader都繼承自MgReader,都是一個(gè)用于讀取查詢結(jié)果的前向只讀迭代器(Forward-Only,Read-OnlyIterator),

11、讀取器的初始位置總是位于第一個(gè)數(shù)據(jù)之前,在讀取數(shù)據(jù)之前必須調(diào)用方法ReadNext(.J,在調(diào)用ReadNext()之后就無(wú)法讀取讀取器當(dāng)前位置之前的數(shù)據(jù)。它們之間的主要不同點(diǎn)是,MgFeatureReader包含了一個(gè)方法MgFeatureReader:GetClassDefinition(),通過(guò)該方法的返回值可以得到查詢結(jié)果的類(lèi)定義(ClassDefinition),通過(guò)類(lèi)定義得到每個(gè)屬性的定義、主鍵等信息,而MgDataReader和MgSqlDataReader僅僅可以通過(guò)方法MgReader:GetPropertyType(.J得到屬性的類(lèi)型。如下的代碼展示了將一個(gè)MgFeatur

12、eReader實(shí)例中的所有要素輸出到一個(gè)文件中。需要注意的是,在使用讀取器讀取完數(shù)據(jù)后要盡量馬上調(diào)用方法MgReader:Close()關(guān)閉讀取器。為什么呢?為了提高M(jìn)apGuide服務(wù)器的響應(yīng)速度,MapGuide服務(wù)器使用了連接池(ConnectionPool)的方式緩存了要素源FDO連接,即FdolConnection實(shí)例,當(dāng)接收到一個(gè)要素服務(wù)請(qǐng)求之后,它會(huì)首先在FDO連接池中查找是否有可用的FDO連接,如果有就使用此FDO連接執(zhí)行服務(wù)請(qǐng)求,否則創(chuàng)建一個(gè)新的FDO連接,但是如果已經(jīng)超過(guò)服務(wù)器配置文件中設(shè)置的最大FDO連接數(shù),那么此要素服務(wù)請(qǐng)求會(huì)失敗。當(dāng)要素服務(wù)返回一個(gè)讀取器之后,為了保證查詢結(jié)果不會(huì)在讀取數(shù)據(jù)之前消失

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論