Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - プログラミング » SQL Anywhere データ・アクセス API » SQL Anywhere .NET データ・プロバイダ » データのアクセスと操作 » SACommand オブジェクトを使用したデータの検索と操作

 

SACommand オブジェクトを使用したデータの取得

SACommand オブジェクトを使用して、SQL Anywhere データベースに対して SQL 文を実行したりストアド・プロシージャを呼び出したりできます。次のいずれかのメソッドを使用して、データベースからデータを取り出すことができます。

  • ExecuteReader   結果セットを返す SQL クエリを発行します。このメソッドは、前方専用、読み込み専用のカーソルを使用します。結果セット内のローを 1 方向で簡単にループできます。

    詳細については、ExecuteReader メソッドを参照してください。

  • ExecuteScalar   単一の値を返す SQL クエリを発行します。これは、結果セットの最初のローの最初のカラムの場合や、COUNT または AVG などの集約値を返す SQL 文の場合があります。このメソッドは、前方専用、読み込み専用のカーソルを使用します。

    詳細については、ExecuteScalar メソッドを参照してください。

SACommand オブジェクトを使用する場合、SADataReader を使用して、ジョインに基づく結果セットを取り出すことができます。ただし、変更 (挿入、更新、または削除) を行うことができるのは、単一テーブルのデータのみです。ジョインに基づく結果セットは更新できません。

次の手順では、.NET データ・プロバイダに用意されている Simple コード・サンプルを使用します。

Simple コード・サンプルの詳細については、Simple サンプル・プロジェクトの知識を参照してください。

♦  詳細な結果セットを返す SQL クエリを発行するには、次の手順に従います。
  1. Connection オブジェクトを宣言して初期化します。

    SAConnection conn = new SAConnection(
        "Data Source=SQL Anywhere 11 Demo" );
  2. 接続を開きます。

    try {
        conn.Open();
  3. SQL 文を定義して実行する Command オブジェクトを追加します。

    SACommand cmd = new SACommand(
         "SELECT Surname FROM Employees", conn );

    ストアド・プロシージャを呼び出す場合は、ストアド・プロシージャのパラメータを指定してください。

    詳細については、ストアド・プロシージャの使用SAParameter クラスを参照してください。

  4. DataReader オブジェクトを返す ExecuteReader メソッドを呼び出します。

    SADataReader reader = cmd.ExecuteReader();
  5. 結果を表示します。

    listEmployees.BeginUpdate();
    while( reader.Read() ) {
         listEmployees.Items.Add( reader.GetString( 0 ) );
    }
    listEmployees.EndUpdate();
  6. DataReader オブジェクトと Connection オブジェクトを閉じます。

    reader.Close();
    conn.Close();
♦  単一値のみを返す SQL クエリを発行するには、次の手順に従います。
  1. SAConnection オブジェクトを宣言して初期化します。

    SAConnection conn = new SAConnection(
        "Data Source=SQL Anywhere 11 Demo" );
  2. 接続を開きます。

    conn.Open();
  3. SQL 文を定義して実行する SACommand オブジェクトを追加します。

    SACommand cmd = new SACommand(
        "SELECT COUNT(*) FROM Employees WHERE Sex = 'M'",
        conn );

    ストアド・プロシージャを呼び出す場合は、ストアド・プロシージャのパラメータを指定してください。

    詳細については、ストアド・プロシージャの使用を参照してください。

  4. ExecuteScalar メソッドを呼び出して、値が含まれるオブジェクトを返します。

    int count = (int) cmd.ExecuteScalar();
  5. SAConnection オブジェクトを閉じます。

    conn.Close();

SADataReader を使用する場合、指定したデータ型で結果を返すための Get メソッドが複数あります。

詳細については、SADataReader クラスを参照してください。

Visual Basic DataReader の例

次の Visual Basic コードは、SQL Anywhere サンプル・データベースへの接続を開き、DataReader を使用して結果セット内の最初の 5 人の従業員の姓を返します。

Dim myConn As New SAConnection()
Dim myCmd As _
  New SACommand _
  ("SELECT Surname FROM Employees", myConn)
Dim myReader As SADataReader
Dim counter As Integer
myConn.ConnectionString = _
  "Data Source=SQL Anywhere 11 Demo"
myConn.Open()
myReader = myCmd.ExecuteReader()
counter = 0
Do While (myReader.Read())
  MsgBox(myReader.GetString(0))
  counter = counter + 1
  If counter >= 5 Then Exit Do
Loop
myConn.Close()