入門者必看!SharePoint之CAML總結(實戰)

分享人:廣州華軟 無名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

協做應用程序標記語言 (CAML) 是一種基於 XML 的語言。

在SharePoint使用此語言描述對列表的查詢,同時也描述字段類型定義、站點模板定義等。

在SharePoint開發中,基本都包含數據查詢,根據某些篩選、排序條件,查詢某個列表條目的集合。

四. 如何使用CAML查詢數據

4.1 篩選條件

操做符

備註

Eq

等於

Neq

不等於

Lt

小於

Leq

小於等於

Gt

大於

Geq

大於等於

Contains

包含

BeginsWith

以某字符串開頭

In

在集合範圍內

IsNull

爲空,

IsNotNull

不爲空

Membership

屬於用戶組

User

用戶

Boolean

是否,值(1是,0否)

_ModerationStatus

批准,0已批准,1已拒絕,2待定

 

 

4.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>

4.3 排序條件

使用<OrderBy></OrderBy>指定排序條件。

查詢條件中每一個字段按照排列的順序依次爲首要查詢條件、次要查詢條件:

 <FieldRef Name='字段名' Ascending='TRUE|FALSE' />

其中的Name屬性一樣必須使用內部名稱,Ascending指定升序或者降序,則默認升序。

  <OrderBy>

  <FieldRef Name='Title'/>

  <FieldRef Name='ID' Ascending='FALSE' />

  </OrderBy>

 

4.4 返回字段

考慮到查詢性能,須要指定返回字段,不指定則返回全部字段。指定返回字段的方式使用<FieldRef Name='字段名' />的形式。

例如,若是須要返回標題、ID字段,則寫法爲:

<FieldRef Name='Title' />

<FieldRef Name='ID' />

4.5 查詢範圍

ViewAttributes = "Scope='FilesOnly'"

Scope='Default' : 只查詢指定文件夾下的項目及子文件夾

Scope='FilesOnly' : 只查詢指定文件夾下的項目

Scope='Recursive' : 查詢全部項目,不查詢文件夾

Scope='RecursiveAll' : 查詢全部項目和全部子文件夾

4.6 字段類型

使用CAML語法查詢列表數據,須要指定字段類型,不一樣的字段類型,CAML語法也不同。下面列出經常使用的字段類型以及經常使用的經常使用類型的查詢方式。

成員名稱

說明

Integer

正整數或負整數值。

Text

單行文本。

DateTime

日期和時間值。

Counter

內部 ID 字段的整數

Choice

選項值。

Lookup

其餘列表中的值對的引用。

Boolean

數據庫中存儲爲1或0的布爾值。。

Number

浮點數。

Currency

在特定區域設置基於貨幣值的格式。

URL

超連接。

Calculated

計算的值。

User

SharePoint 網站的用戶。

ModStat

內容審批狀態。

4.6.1 Integer

<Eq><FieldRef Name='Age'/><Value Type='Text'>12</Value></Eq>

4.6.2 Text

<Eq><FieldRef Name='Title'/><Value Type='Text'>測試</Value></Eq>

4.6.3 Boolean

True

<Eq><FieldRef Name='IsEnd' /><Value Type='Boolean'>1</Value></Eq>

False

<Eq><FieldRef Name='IsEnd /><Value Type='Boolean'>0</Value></Eq>

4.6.4 Url

例如:http://sp/managedpath/spwebOrSitecollectionname,須要用相對地址

<Where>

    <BeginsWith>

            <FieldRef Name='URL'/>

            <Value Type='URL'>/managedpath/spwebOrSitecollectionname</Value>

     </BeginsWith>

</Where>

 

4.6.5 Calculated

這裏的Type取值爲SPFieldCalculated.OutputType

<Eq>

<FieldRef Name='FullName' />

<Value Type='Text'>Rafael</Value>

</Eq>

4.6.6 Counter

<Eq><FieldRef Name='ID' /><Value Type='Counter'>66</Value></Eq>

4.6.7 User

根據用戶ID查詢

<Eq><FieldRef Name='Author' LookupId='True' /><Value Type='Lookup' >31</Value></Eq>"

 

4.6.8 Folder

若是是文件,則FSObjType的值爲0

  <Eq>

   <FieldRef Name='FSObjType' />

   <Value Type='Number'>1</Value>

  </Eq>

 

4.6.9 Date

默認狀況下,對於時間和日期類型的查詢只精確到日期,若是須要精確到時間:

   <Gt>  <FieldRef Name='DateTimeField' /> <Value Type='DateTime' IncludeTimeValue='TRUE'>  2009-10-08T17:48:37Z  </Value> </Gt>

(其中的日期格式能夠經過使用一個靜態方法SPUtility.CreateISO8601DateTimeFromSystemDateTime轉換獲得)

 

4.6.10 Lookup

若是查詢的字段類別是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>

4.6.11 IsNull

<IsNull> <FieldRef Name="Status" /></IsNull>

4.6.12 IsNotNull

< IsNotNull> <FieldRef Name="Status" /></ IsNotNull>

4.6.13 ModStat 

<Eq><FieldRef Name='_ModerationStatus'/><Value Type='ModStat'>0</Value></Eq>

 

4.7 完整例子

查詢標題爲**的數據。

 

 

五. 總結

本文主要介紹瞭如何使用CAML查詢數據,只有掌握它,才能更好地進行SharePoint開發。

在編寫CAML字符串的時候,須要特別注意Xml標籤的大小寫是敏感的。

CAML語法,以Xml的形式進行標準化,便於計算機的解析和閱讀,相比SQL而言,也更加安全,不用擔憂SQL注入。

要說CAML的地位就至關於SQL在網站中的地位同樣,使你不得不去熟悉它。

 

以爲本文有用的,能夠點一下關注哦!

相關文章
相關標籤/搜索