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 オブジェクトを使用してローを挿入、更新、削除するには、ExecuteNonQuery 関数を使用します。ExecuteNonQuery 関数は、結果セットを返さないクエリ (SQL 文またはストアド・プロシージャ) を発行します。ExecuteNonQuery メソッドを参照してください。

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

オートインクリメント・プライマリ・キーのプライマリ・キー値の取得に関する詳細については、プライマリ・キー値の取得を参照してください。

SQL 文の独立性レベルを設定するには、SACommand オブジェクトを SATransaction オブジェクトの一部として使用します。SATransaction オブジェクトを使用しないでデータを修正すると、.NET データ・プロバイダはオートコミット・モードで動作し、実行した変更内容は即座に適用されます。Transaction 処理を参照してください。

♦  ローを挿入する文を発行するには、次の手順に従います。
  1. SAConnection オブジェクトを宣言して初期化します。

    SAConnection conn = new SAConnection(
        c_connStr );
    conn.Open();
  2. 接続を開きます。

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

    INSERT、UPDATE、または DELETE 文とともに ExecuteNonQuery メソッドを使用できます。

    SACommand insertCmd = new SACommand(
        "INSERT INTO Departments( DepartmentID, DepartmentName )
        VALUES( ?, ? )", conn );

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

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

  4. SACommand オブジェクトのパラメータを設定します。

    次のコードは、DepartmentID カラムと DepartmentName カラムそれぞれのパラメータを定義します。

    SAParameter parm = new SAParameter();
    parm.SADbType = SADbType.Integer;
    insertCmd.Parameters.Add( parm );
    parm = new SAParameter();
    parm.SADbType = SADbType.Char;
    insertCmd.Parameters.Add( parm );
  5. 新しい値を挿入し、ExecuteNonQuery メソッドを呼び出して、変更内容をデータベースに適用します。

    insertCmd.Parameters[0].Value = 600;
    insertCmd.Parameters[1].Value = "Eastern Sales";
    int recordsAffected = insertCmd.ExecuteNonQuery();
    insertCmd.Parameters[0].Value = 700;
    insertCmd.Parameters[1].Value = "Western Sales";
    recordsAffected = insertCmd.ExecuteNonQuery();
  6. 結果を表示し、これらを画面上のグリッドにバインドします。

    SACommand selectCmd = new SACommand(
        "SELECT * FROM Departments", conn );
    SADataReader dr = selectCmd.ExecuteReader();
    
    System.Windows.Forms.DataGrid dataGrid;
    dataGrid = new System.Windows.Forms.DataGrid();
    dataGrid.Location = new Point(10, 10);
    dataGrid.Size = new Size(275, 200);
    dataGrid.CaptionText = "iAnywhere SACommand Example";
    this.Controls.Add(dataGrid);
    
    dataGrid.DataSource = dr;
    dataGrid.Show();
  7. SADataReader オブジェクトと SAConnection オブジェクトを閉じます。

    dr.Close();
    conn.Close();
♦  ローを更新する文を発行するには、次の手順に従います。
  1. SAConnection オブジェクトを宣言して初期化します。

    SAConnection conn = new SAConnection(
        c_connStr );
  2. 接続を開きます。

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

    INSERT、UPDATE、または DELETE 文とともに ExecuteNonQuery メソッドを使用できます。

    SACommand updateCmd = new SACommand(
        "UPDATE Departments SET DepartmentName = 'Engineering'
        WHERE DepartmentID=100", conn );

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

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

  4. ExecuteNonQuery メソッドを呼び出して、変更内容をデータベースに適用します。

    int recordsAffected = updateCmd.ExecuteNonQuery();
  5. 結果を表示し、これらを画面上のグリッドにバインドします。

    SACommand selectCmd = new SACommand(
        "SELECT * FROM Departments", conn );
    SADataReader   dr = selectCmd.ExecuteReader();
    dataGrid.DataSource = dr;
  6. SADataReader オブジェクトと SAConnection オブジェクトを閉じます。

    dr.Close();
    conn.Close();
♦  ローを削除する文を発行するには、次の手順に従います。
  1. SAConnection オブジェクトを宣言して初期化します。

    SAConnection conn = new SAConnection(
        c_connStr );
  2. 接続を開きます。

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

    INSERT、UPDATE、または DELETE 文とともに ExecuteNonQuery メソッドを使用できます。

    SACommand deleteCmd = new SACommand(
        "DELETE FROM Departments WHERE ( DepartmentID > 500 )", conn );

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

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

  4. ExecuteNonQuery メソッドを呼び出して、変更内容をデータベースに適用します。

    int recordsAffected = deleteCmd.ExecuteNonQuery();
  5. SAConnection オブジェクトを閉じます。

    conn.Close();