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

SQL Anywhere 12.0.1 » Ultra Light .NET プログラミング » チュートリアル:Ultra Light.NET を使用した Windows Mobile アプリケーションの構築

 

レッスン 4:データの挿入、更新、削除

このレッスンでは、コードをアプリケーションに追加し、データベースのデータを変更します。次の手順では、動的 SQL を使用します。テーブル API を使用して同じテクニックを実行することもできます。

次の手順では、リストボックスを管理するサポートメソッドを作成します。このメソッドは、残りの手順で作成されるデータ操作メソッドに必要です。

 ♦ リストボックスを管理するコードの追加
  1. フォームを右クリックし、[コードの表示] をクリックします。

  2. Form1 クラスのメソッドを追加し、リストボックスを更新してデータを移植します。このメソッドでは、次のタスクを実行します。

    • リストボックスをクリアします。

    • ULCommand オブジェクトをインスタンス化し、データベース内の Names テーブルのデータを返す SELECT クエリに割り当てます。

    • クエリを実行し、ULDataReader として結果セットを返します。

    • 結果セットの行数と同じ長さの整数配列をインスタンス化します。

    • ULDataReader で返される名前をリストボックスに移植し、ULDataReader で返される ID を整数配列に移植します。

    • ULDataReader を閉じます。

    • エラーが発生した場合は、エラーメッセージが出力されます。SQL エラーの場合は、エラーコードも出力されます。

    C# の場合は、Form1 クラスのメソッドとして次のコードをアプリケーションに追加します。



    //Visual C#
    private void RefreshListBox(){
        try{
            long NumRows;
            int I = 0;
            lbNames.Items.Clear();
            using( ULCommand cmd = Conn.CreateCommand() ){
                cmd.CommandText = "SELECT ID, Name FROM Names";
                using( ULDataReader dr = cmd.ExecuteReader()){
                    dr.MoveBeforeFirst();
                    NumRows = dr.RowCount;
                    ids = new int[ NumRows ];
                    while (dr.MoveNext())
                    {
                        lbNames.Items.Add(
                        dr.GetString(1));
                        ids[ I ] = dr.GetInt32(0);
                        I++;
                    }
                }
                txtName.Text = " ";   
            }
        }
        catch( Exception err ){
            MessageBox.Show(
            "Exception in RefreshListBox: " + err.Message );
        }
    }

    Visual Basic の場合は、Form1 クラスのメソッドとして次のコードをアプリケーションに追加します。



    'Visual Basic
    Private Sub RefreshListBox()
        Try
            Dim cmd As ULCommand = Conn.CreateCommand()
            Dim I As Integer = 0
            lbNames.Items.Clear()
            cmd.CommandText = "SELECT ID, Name FROM Names"
            Dim dr As ULDataReader = cmd.ExecuteReader()
            ReDim ids(dr.RowCount)
            While (dr.MoveNext)
                lbNames.Items.Add(dr.GetString(1))
                ids(I) = dr.GetInt32(0)
                I = I + 1
            End While
            dr.Close()
            txtName.Text = " "   
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub
  3. プロジェクトをビルドします。

    プロジェクトのビルドによってエラーが発生しないようにします。

 ♦ INSERT、UPDATE、DELETE の実装
  1. [フォーム デザイン] タブで [Insert] をダブルクリックして、btnInsert_Click メソッドを作成します。このメソッドでは、次のタスクを実行します。

    • ULCommand オブジェクトをインスタンス化し、テキストボックス内の値をデータベースに挿入する INSERT 文に割り当てます。

    • 文を実行します。

    • ULCommand オブジェクトを破棄します。

    • リストボックスをリフレッシュします。

    • エラーが発生した場合は、エラーメッセージが出力されます。SQL エラーの場合は、エラーコードも出力されます。

    C# の場合は、次のコードを btnInsert_Click メソッドに追加します。



    //Visual C#
    try {
        long RowsInserted;
        using( ULCommand cmd = Conn.CreateCommand() ) {
            cmd.CommandText = 
                "INSERT INTO Names(name) VALUES (?)";
            cmd.Parameters.Add("", txtName.Text);
            RowsInserted = cmd.ExecuteNonQuery();
        }
        RefreshListBox();
    } 
    catch( Exception err ) {
        MessageBox.Show("Exception: " + err.Message );
    }

    Visual Basic の場合は、次のコードを btnInsert_Click メソッドに追加します。



    'Visual Basic
    Try
        Dim RowsInserted As Long
        Dim cmd As ULCommand = Conn.CreateCommand()
        cmd.CommandText = "INSERT INTO Names(name) VALUES (?)"
        cmd.Parameters.Add("", txtName.Text)
        RowsInserted = cmd.ExecuteNonQuery()
        cmd.Dispose()
        RefreshListBox()
    Catch
        MsgBox("Exception: " + Err.Description)
    End Try
  2. [フォーム デザイン] タブで [Update] をダブルクリックして、btnUpdate_Click メソッドを作成します。このメソッドでは、次のタスクを実行します。

    • ULCommand オブジェクトをインスタンス化し、関連 ID に基づいて、テキストボックス内の値をデータベースに挿入する UPDATE 文に割り当てます。

    • 文を実行します。

    • ULCommand オブジェクトを破棄します。

    • リストボックスをリフレッシュします。

    • エラーが発生した場合は、エラーメッセージが出力されます。SQL エラーの場合は、エラーコードも出力されます。

    C# の場合は、次のコードを btnUpdate_Click メソッドに追加します。



    //Visual C#
    try {
        long RowsUpdated;
        int updateID = ids[ lbNames.SelectedIndex ];
        using( ULCommand cmd = Conn.CreateCommand() ){
            cmd.CommandText = 
                "UPDATE Names SET name = ? WHERE id = ?" ;
            cmd.Parameters.Add("", txtName.Text );
            cmd.Parameters.Add("", updateID);
            RowsUpdated = cmd.ExecuteNonQuery();
        }
        RefreshListBox();
    }
    catch( Exception err ) {
        MessageBox.Show(
            "Exception: " + err.Message);
    }

    Visual Basic の場合は、次のコードを btnUpdate_Click メソッドに追加します。



    'Visual Basic
    Try
        Dim RowsUpdated As Long
        Dim updateID As Integer = ids(lbNames.SelectedIndex)
        Dim cmd As ULCommand = Conn.CreateCommand()
        cmd.CommandText = "UPDATE Names SET name = ? WHERE id = ?"
        cmd.Parameters.Add("", txtName.Text)
        cmd.Parameters.Add("", updateID)
        RowsUpdated = cmd.ExecuteNonQuery()
        cmd.Dispose()
        RefreshListBox()
    Catch
        MsgBox("Exception: " + Err.Description)
    End Try
  3. [フォーム デザイン] タブで [Delete] をダブルクリックして、btnDelete_Click メソッドを作成します。コードを追加し、次のタスクを実行します。

    • ULCommand オブジェクトをインスタンス化し、DELETE 文に割り当てます。DELETE 文は、整数配列 ids からの関連 ID に基づいて、選択した行をデータベースから削除します。

    • 文を実行します。

    • ULCommand オブジェクトを破棄します。

    • リストボックスをリフレッシュします。

    • エラーが発生した場合は、エラーメッセージが表示されます。SQL エラーの場合は、エラーコードも表示されます。

    C# の場合は、次のコードを btnDelete_Click メソッドに追加します。



    //Visual C#
    try{
        long RowsDeleted;
        int deleteID = ids[lbNames.SelectedIndex];
        using( ULCommand cmd = Conn.CreateCommand() ){
            cmd.CommandText = 
                "DELETE From Names WHERE id = ?" ;
            cmd.Parameters.Add("", deleteID);
            RowsDeleted = cmd.ExecuteNonQuery ();
        }
        RefreshListBox();
    } 
    catch( Exception err ) { 
        MessageBox.Show("Exception: " + err.Message );
    }

    Visual Basic の場合は、次のコードを btnDelete_Click メソッドに追加します。



    'Visual Basic
    Try
        Dim RowsDeleted As Long
        Dim deleteID As Integer = ids(lbNames.SelectedIndex)
        Dim cmd As ULCommand = Conn.CreateCommand()
        cmd.CommandText = "DELETE From Names WHERE id = ?"
        cmd.Parameters.Add("", deleteID)
        RowsDeleted = cmd.ExecuteNonQuery()
        cmd.Dispose()
        RefreshListBox()
    Catch
        MsgBox("Exception: " + Err.Description)
    End Try
  4. アプリケーションをビルドし、正常にコンパイルされることを確認します。

 参照