分享人:廣州華軟 無名web
在SharePoint中,不支持直接操做數據庫,但開發過程當中,避免不了查詢數據,那麼,在SharePoint中如何查詢數據?數據庫
固然是使用CAML語法。安全
1. 什麼是CAML性能
2. 如何使用CAML查詢數據測試
3.1 如何經過知識分享模板建立分享文章網站
3.2 篩選條件spa
3.3 邏輯運算3d
3.4排序條件blog
3.5返回字段排序
3.6查詢範圍
3.7字段類型
3.8完整例子
4.總結
協做應用程序標記語言 (CAML) 是一種基於 XML 的語言。
在SharePoint使用此語言描述對列表的查詢,同時也描述字段類型定義、站點模板定義等。
在SharePoint開發中,基本都包含數據查詢,根據某些篩選、排序條件,查詢某個列表條目的集合。
操做符 |
備註 |
Eq |
等於 |
Neq |
不等於 |
Lt |
小於 |
Leq |
小於等於 |
Gt |
大於 |
Geq |
大於等於 |
Contains |
包含 |
BeginsWith |
以某字符串開頭 |
In |
在集合範圍內 |
IsNull |
爲空, |
IsNotNull |
不爲空 |
Membership |
屬於用戶組 |
User |
用戶 |
Boolean |
是否,值(1是,0否) |
_ModerationStatus |
批准,0已批准,1已拒絕,2待定 |
在CAML中也支持多個查詢條件的邏輯組合,支持「與」和「或」,可是不支持「非」。經過<And></And>和<Or></Or>標籤進行邏輯運算。
不過須要特別聲明的是,And標籤和Or標籤內部,只能使用兩個查詢條件。
And標籤和Or標籤內部,只能使用兩個查詢條件,須要3個條件,則須要改爲And嵌套And
<And>
<And>
<Eq><FieldRef Name=」Title」><Value Type=」Text」>Value</Value></Eq>
<Eq><FieldRef Name=」Name」><Value Type=」Text」>Value</Value></Eq>
</And>
<Eq><FieldRef Name=」School」><Value Type=」Text」>Value</Value></Eq>
</And>
使用<OrderBy></OrderBy>指定排序條件。
查詢條件中每一個字段按照排列的順序依次爲首要查詢條件、次要查詢條件:
<FieldRef Name='字段名' Ascending='TRUE|FALSE' />
其中的Name屬性一樣必須使用內部名稱,Ascending指定升序或者降序,則默認升序。
<OrderBy>
<FieldRef Name='Title'/>
<FieldRef Name='ID' Ascending='FALSE' />
</OrderBy>
考慮到查詢性能,須要指定返回字段,不指定則返回全部字段。指定返回字段的方式使用<FieldRef Name='字段名' />的形式。
例如,若是須要返回標題、ID字段,則寫法爲:
<FieldRef Name='Title' />
<FieldRef Name='ID' />
ViewAttributes = "Scope='FilesOnly'"
Scope='Default' : 只查詢指定文件夾下的項目及子文件夾
Scope='FilesOnly' : 只查詢指定文件夾下的項目
Scope='Recursive' : 查詢全部項目,不查詢文件夾
Scope='RecursiveAll' : 查詢全部項目和全部子文件夾
使用CAML語法查詢列表數據,須要指定字段類型,不一樣的字段類型,CAML語法也不同。下面列出經常使用的字段類型以及經常使用的經常使用類型的查詢方式。
成員名稱 |
說明 |
Integer |
正整數或負整數值。 |
Text |
單行文本。 |
DateTime |
日期和時間值。 |
Counter |
內部 ID 字段的整數 |
Choice |
選項值。 |
Lookup |
其餘列表中的值對的引用。 |
Boolean |
數據庫中存儲爲1或0的布爾值。。 |
Number |
浮點數。 |
Currency |
在特定區域設置基於貨幣值的格式。 |
URL |
超連接。 |
Calculated |
計算的值。 |
User |
SharePoint 網站的用戶。 |
ModStat |
內容審批狀態。 |
<Eq><FieldRef Name='Age'/><Value Type='Text'>12</Value></Eq>
<Eq><FieldRef Name='Title'/><Value Type='Text'>測試</Value></Eq>
True
<Eq><FieldRef Name='IsEnd' /><Value Type='Boolean'>1</Value></Eq>
False
<Eq><FieldRef Name='IsEnd /><Value Type='Boolean'>0</Value></Eq>
例如:http://sp/managedpath/spwebOrSitecollectionname,須要用相對地址
<Where>
<BeginsWith>
<FieldRef Name='URL'/>
<Value Type='URL'>/managedpath/spwebOrSitecollectionname</Value>
</BeginsWith>
</Where>
這裏的Type取值爲SPFieldCalculated.OutputType
<Eq>
<FieldRef Name='FullName' />
<Value Type='Text'>Rafael</Value>
</Eq>
<Eq><FieldRef Name='ID' /><Value Type='Counter'>66</Value></Eq>
根據用戶ID查詢
<Eq><FieldRef Name='Author' LookupId='True' /><Value Type='Lookup' >31</Value></Eq>"
若是是文件,則FSObjType的值爲0
<Eq>
<FieldRef Name='FSObjType' />
<Value Type='Number'>1</Value>
</Eq>
默認狀況下,對於時間和日期類型的查詢只精確到日期,若是須要精確到時間:
<Gt> <FieldRef Name='DateTimeField' /> <Value Type='DateTime' IncludeTimeValue='TRUE'> 2009-10-08T17:48:37Z </Value> </Gt>
(其中的日期格式能夠經過使用一個靜態方法SPUtility.CreateISO8601DateTimeFromSystemDateTime轉換獲得)
若是查詢的字段類別是lookup,指定值的時候能夠指定具體值也能夠指定ID,若是須要指定ID,須要在FieldRef元素裏指定LookupId爲true
<Eq>
<FieldRef Name='CFRefTitle />
<Value Type='Lookup'>測試</Value>
</Eq>
或者
<Eq><FieldRef Name='Country' LookupId='True' /><Value Type='Lookup'>11</Value></Eq>
<IsNull> <FieldRef Name="Status" /></IsNull>
< IsNotNull> <FieldRef Name="Status" /></ IsNotNull>
<Eq><FieldRef Name='_ModerationStatus'/><Value Type='ModStat'>0</Value></Eq>
查詢標題爲**的數據。
本文主要介紹瞭如何使用CAML查詢數據,只有掌握它,才能更好地進行SharePoint開發。
在編寫CAML字符串的時候,須要特別注意Xml標籤的大小寫是敏感的。
CAML語法,以Xml的形式進行標準化,便於計算機的解析和閱讀,相比SQL而言,也更加安全,不用擔憂SQL注入。
要說CAML的地位就至關於SQL在網站中的地位同樣,使你不得不去熟悉它。
以爲本文有用的,能夠點一下關注哦!