Поделиться через


SqlCeCommand.IndexName Property

Указывает открываемый индекс.

Пространство имен: System.Data.SqlServerCe
Сборка: System.Data.SqlServerCe (в system.data.sqlserverce.dll)

Синтаксис

'Декларация
Public Property IndexName As String
public string IndexName { get; set; }
public:
property String^ IndexName {
    String^ get ();
    void set (String^ value);
}
/** @property */
public String get_IndexName ()

/** @property */
public void set_IndexName (String value)
public function get IndexName () : String

public function set IndexName (value : String)

Значение свойства

Имя открываемого индекса.

Замечания

Свойство IndexName позволяет объекту SqlCeDataReader производить выборку строк из базовой таблицы в порядке размещения строк в указанном индексе. Таким образом обеспечивается упорядоченная выборка строк без использования инструкции SELECT. Например, чтобы осуществить выборку данных о сотрудниках по их идентификаторам, на стороне клиента можно выполнить инструкцию SELECT * FROM Employees ORDER BY EmployeeID, но результат может быть возвращен быстрее, если в свойстве IndexName задать имя индекса. Это свойство может использоваться только для команды, свойство CommandType которой имеет значение TableDirect, а свойство CommandText указывает допустимую базовую таблицу, содержащую заданный индекс.

Выборка из индекса строк согласно значению свойства IndexName приводит к выборке всех строк из базовой таблицы в порядке, определенном индексом. Чтобы ограничить число возвращаемых строк необходимо вызвать метод SetRange, а чтобы найти в индексе конкретное значение — метод Seek.

Пример

В следующем примере открывается базовая таблица, а индекс применяется для ускорения выборки значений, входящих в заданный диапазон.

Dim cmd As SqlCeCommand = conn.CreateCommand()
cmd.CommandType = CommandType.TableDirect

' This is the name of the base table 
'
cmd.CommandText = "Orders"

'Assume: Index contains three columns [int, datetime, money]
'
cmd.IndexName = "SomeIndex"

Dim start(2) As Object
Dim [end](0) As Object

start(0) = 1
start(1) = New SqlDateTime(1996, 1, 1)
start(2) = New SqlMoney(10.0)

[end](0) = 5

cmd.SetRange(DbRangeOptions.InclusiveStart Or DbRangeOptions.InclusiveEnd, start, [end])

Dim rdr As SqlCeDataReader = cmd.ExecuteReader()
rdr.Seek(DbSeekOptions.AfterEqual, 1, New SqlDateTime(1997, 1, 1), New SqlMoney(10.5))

While rdr.Read()
    ' Read data the usual way 
    '
End While
rdr.Close()
SqlCeCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.TableDirect;

// This is the name of the base table 
//
cmd.CommandText = "Orders";

//Assume: Index contains three columns [int, datetime, money]
//
cmd.IndexName = "SomeIndex";

object[] start = new object[3];
object[] end = new object[1];

start[0] = 1;
start[1] = new SqlDateTime(1996, 1, 1);
start[2] = new SqlMoney(10.00);

end[0] = 5;

cmd.SetRange(DbRangeOptions.InclusiveStart | DbRangeOptions.InclusiveEnd, start, end);

SqlCeDataReader rdr = cmd.ExecuteReader();
rdr.Seek(DbSeekOptions.AfterEqual, 1, new SqlDateTime(1997, 1, 1), new SqlMoney(10.50));

while (rdr.Read())
{
    // Read data the usual way 
    //
}
rdr.Close();

Многопоточное использование

Все общие статические члены (Shared в Microsoft Visual Basic) этого типа можно использовать в многопоточных операциях. Безопасная многопоточная работа с членами экземпляров типа не гарантируется.

Платформы

Платформы разработки

Windows Vista, Windows Mobile 5.0, Windows XP Professional with Service Pack 2 (SP2), Windows Server 2003, Windows Mobile 2003 for Pocket PC, Windows CE 5.0
Сведения о версии
.NET Framework и NET Compact Framework
Поддерживается в версии 3.5
.NET Framework
Поддерживается в версии 3.0
.NET Compact Framework и .Net Framework
Поддерживается в версии 2.0

См. также

Справочник

SqlCeCommand Class
SqlCeCommand Members
System.Data.SqlServerCe Namespace