DbRangeOptions 枚举
指定在指定要查找的索引范围时,SetRange 方法使用的选项。
此枚举具有可以使用其成员值位组合的 FlagsAttribute 属性。
命名空间: System.Data.SqlServerCe
程序集: System.Data.SqlServerCe(在 System.Data.SqlServerCe.dll 中)
语法
声明
<FlagsAttribute> _
Public Enumeration DbRangeOptions
用法
Dim instance As DbRangeOptions
[FlagsAttribute]
public enum DbRangeOptions
[FlagsAttribute]
public enum class DbRangeOptions
[<FlagsAttribute>]
type DbRangeOptions
public enum DbRangeOptions
成员
成员名称 | 说明 | |
---|---|---|
InclusiveStart | 将 startData 值包含在范围之内。 | |
InclusiveEnd | 将 endData 值包含在范围之内。 | |
ExclusiveStart | 从范围中排除 startData 值。 | |
ExclusiveEnd | 从范围中排除 endData 值。 | |
ExcludeNulls | 从范围中排除 nullnull 引用(在 Visual Basic 中为 Nothing) 值。 | |
Prefix | 指定其中的索引值从 startData 值开始的范围。在使用 Prefix 选项时,必须将 endData 设置为 nullnull 引用(在 Visual Basic 中为 Nothing)。 | |
Match | 指定其中的索引值与 startData 值相匹配的范围。在使用 Match 选项时,必须将 endData 设置为 nullnull 引用(在 Visual Basic 中为 Nothing)。 | |
Default | 相当于同时设置 InclusiveStart 和 InclusiveEnd 标志。 |
注释
如果您指定 Match 或 Prefix 选项,则 endData 值必须为 nullnull 引用(在 Visual Basic 中为 Nothing)。
不能合并 Match 和 ExcludeNulls 选项。
示例
在此示例中,在调用 SetRange 方法时,对索引执行的 Seek 操作的范围选项被指定为 InclusiveStart 或 InclusiveEnd。
Try
Dim conn As New SqlCeConnection("Data Source = MyDatabase.sdf")
conn.Open()
Dim cmd As SqlCeCommand = conn.CreateCommand()
cmd.CommandType = CommandType.TableDirect
cmd.IndexName = "Orders_PK"
cmd.CommandText = "Orders"
' We are interested in orders that match Order ID = 10020
'
cmd.SetRange(DbRangeOptions.Match, New Object() {10020}, Nothing)
Dim reader As SqlCeDataReader = cmd.ExecuteReader(CommandBehavior.Default)
While reader.Read()
MessageBox.Show(String.Format("{0} ; {1}", reader("Order ID"), reader("Order Date")))
End While
' Now we are interested in orders with Order ID between (10020, 10050)
'
cmd.SetRange(DbRangeOptions.InclusiveStart Or DbRangeOptions.InclusiveEnd, New Object() {10020}, New Object() {10050})
reader = cmd.ExecuteReader(CommandBehavior.Default)
' Now seek to Order ID = 10045
'
Dim onRow As Boolean = reader.Seek(DbSeekOptions.FirstEqual, New Object() {10045})
' Now ,the reader will return rows with Order ID >= 10045 <= 10050
' because the range was set to (10020, 10050)
'
If onRow Then
While reader.Read()
MessageBox.Show(String.Format("{0} ; {1}", reader("Order ID"), reader("Order Date")))
End While
End If
Catch e As Exception
MessageBox.Show(e.Message)
End Try
try
{
SqlCeConnection conn = new SqlCeConnection("Data Source = MyDatabase.sdf");
conn.Open();
SqlCeCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.TableDirect;
cmd.IndexName = "Orders_PK";
cmd.CommandText = "Orders";
// We are interested in orders that match Order ID = 10020
//
cmd.SetRange(DbRangeOptions.Match, new object[] { 10020 }, null);
SqlCeDataReader reader = cmd.ExecuteReader(CommandBehavior.Default);
for (int i = 1; reader.Read(); i++)
{
MessageBox.Show(String.Format("{0} ; {1}", reader["Order ID"], reader["Order Date"]));
}
// Now we are interested in orders with Order ID between (10020, 10050)
//
cmd.SetRange(DbRangeOptions.InclusiveStart | DbRangeOptions.InclusiveEnd,
new object[] { 10020 }, new object[] { 10050 });
reader = cmd.ExecuteReader(CommandBehavior.Default);
// Now seek to Order ID = 10045
//
bool onRow = reader.Seek(DbSeekOptions.FirstEqual, new object[] { 10045 });
// Now ,the reader will return rows with Order ID >= 10045 <= 10050
// because the range was set to (10020, 10050)
//
if (onRow)
{
for (int i = 1; reader.Read(); i++)
{
MessageBox.Show(String.Format("{0} ; {1}", reader["Order ID"], reader["Order Date"]));
}
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}