SqlCeResultSet.ReadAbsolute メソッド
ResultSet 内の特定のレコードにリーダーを移動します。
名前空間: System.Data.SqlServerCe
アセンブリ: System.Data.SqlServerCe (System.Data.SqlServerCe.dll)
構文
'宣言
Public Function ReadAbsolute ( _
position As Integer _
) As Boolean
'使用
Dim instance As SqlCeResultSet
Dim position As Integer
Dim returnValue As Boolean
returnValue = instance.ReadAbsolute(position)
public bool ReadAbsolute(
int position
)
public:
bool ReadAbsolute(
int position
)
member ReadAbsolute :
position:int -> bool
public function ReadAbsolute(
position : int
) : boolean
パラメーター
- position
型: System.Int32
リーダーの移動先の位置。
戻り値
型: System.Boolean
正常に操作できた場合は true。それ以外の場合は false。
説明
ReadAbsolute は 0 から始まります。ReadAbsolute(0) を呼び出すと、ResultSet の最初の行が返されます。
このメソッドでは、ブックマークで保存された行の位置に基づいて、行の値が読み取られます。たとえば、10 行を含むテーブルで、2 つの ResultSet (rs1 と rs2) を開くとします。rs1 に対して ReadAbsolue(5) を呼び出し、この行の値を -1 に変更します。この行の位置が、行リストの先頭の位置に変更され、4 行目が 5 行目になります。一方、rs2 に対して ReadAbsolute(5) を呼び出すと、値 -1 が返されます。ResultSet rs2 では、ブックマークが元の 5 行目のまま維持されており、位置が変更されても、引き続きその行が読み取られます。
この関数に正の整数を渡すと、リーダーが最初のレコードから、指定した数のレコード分だけ前に移動します。この関数に負の整数を渡すと、リーダーが最後のレコードから、指定した数のレコード分だけ後ろに移動します。
使用例
ResultSet オブジェクトを作成して、ReadAbsolute を含む、複数のメソッドを呼び出す例を次に示します。
Dim conn As SqlCeConnection = Nothing
Try
File.Delete("Test.sdf")
Dim engine As New SqlCeEngine("Data Source = Test.sdf")
engine.CreateDatabase()
conn = New SqlCeConnection("Data Source = Test.sdf")
conn.Open()
Dim cmd As SqlCeCommand = conn.CreateCommand()
cmd.CommandText = "CREATE TABLE myTable (col1 INT)"
cmd.ExecuteNonQuery()
cmd.CommandText = "SELECT * FROM myTable"
Dim rs As SqlCeResultSet = cmd.ExecuteResultSet(ResultSetOptions.Updatable Or ResultSetOptions.Scrollable)
Dim rec As SqlCeUpdatableRecord = rs.CreateRecord()
' Insert 10 records
'
Dim i As Integer
For i = 0 To 9
rec.SetInt32(0, i)
rs.Insert(rec)
Next i
' Scroll through the results
'
If True = rs.ReadFirst() Then
MessageBox.Show("col1 = " & rs.GetInt32(0)) 'ordinal
End If
If True = rs.ReadRelative(5) Then
MessageBox.Show("col1 = " & rs.GetInt32(0)) 'ordinal
End If
If True = rs.ReadLast() Then
MessageBox.Show("col1 = " & rs.GetInt32(0)) 'ordinal
End If
If True = rs.ReadPrevious() Then
MessageBox.Show("col1 = " & rs.GetInt32(0)) 'ordinal
End If
If True = rs.ReadAbsolute(5) Then
MessageBox.Show("col1 = " & rs.GetInt32(0)) 'ordinal
End If
Catch e As Exception
MessageBox.Show(e.Message)
Finally
conn.Close()
End Try
SqlCeConnection conn = null;
try
{
File.Delete("Test.sdf");
SqlCeEngine engine = new SqlCeEngine("Data Source = Test.sdf");
engine.CreateDatabase();
conn = new SqlCeConnection("Data Source = Test.sdf");
conn.Open();
SqlCeCommand cmd = conn.CreateCommand();
cmd.CommandText = "CREATE TABLE myTable (col1 INT)";
cmd.ExecuteNonQuery();
cmd.CommandText = "SELECT * FROM myTable";
SqlCeResultSet rs = cmd.ExecuteResultSet(ResultSetOptions.Updatable |
ResultSetOptions.Scrollable);
SqlCeUpdatableRecord rec = rs.CreateRecord();
// Insert 10 records
//
for (int i = 0; i < 10; i++)
{
rec.SetInt32(0, i);
rs.Insert(rec);
}
// Scroll through the results
//
if (true == rs.ReadFirst())
{
MessageBox.Show("col1 = " + rs.GetInt32(0 /*ordinal*/));
}
if (true == rs.ReadRelative(5))
{
MessageBox.Show("col1 = " + rs.GetInt32(0 /*ordinal*/));
}
if (true == rs.ReadLast())
{
MessageBox.Show("col1 = " + rs.GetInt32(0 /*ordinal*/));
}
if (true == rs.ReadPrevious())
{
MessageBox.Show("col1 = " + rs.GetInt32(0 /*ordinal*/));
}
if (true == rs.ReadAbsolute(5))
{
MessageBox.Show("col1 = " + rs.GetInt32(0 /*ordinal*/));
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
finally
{
conn.Close();
}