SqlCeCommand.IndexName プロパティ
開くインデックスを指定します。
名前空間: System.Data.SqlServerCe
アセンブリ: System.Data.SqlServerCe (System.Data.SqlServerCe.dll)
構文
'宣言
Public Property IndexName As String
Get
Set
'使用
Dim instance As SqlCeCommand
Dim value As String
value = instance.IndexName
instance.IndexName = value
public string IndexName { get; set; }
public:
property String^ IndexName {
String^ get ();
void set (String^ value);
}
member IndexName : string with get, set
function get IndexName () : String
function set IndexName (value : String)
プロパティ値
型: System.String
開くインデックスの名前。
説明
IndexName を使用すると、SqlCeDataReader で、指定したインデックスによる行の順序に基づいてベース テーブルから行を取得できます。これにより、SELECT ステートメントを使用せずに、行を順番に取得できます。たとえば、従業員 ID に基づいて従業員を取得する場合、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();