入门者必看!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在网站中的地位同样,使你不得不去熟悉它。

 

以为本文有用的,能够点一下关注哦!

相关文章
相关标签/搜索