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

SAP Sybase SQL Anywhere 16.0 » Ultra Light Java プログラミング » チュートリアル:BlackBerry アプリケーションの構築 » 第 1 部:新しい BlackBerry アプリケーションの作成

 

レッスン 5:テーブルへのデータの追加

このレッスンでは、アプリケーションにいくつかのコントロールを追加し、Names テーブルにデータを挿入するコードを実装します。シミュレータでアプリケーションを実行してから、コントロールを使用してデータを入力することで、Ultra Light Java Edition データベースにデータを入力します。

前提条件

このレッスンは、受講者がこれまでのすべてのレッスンを終了していることを前提としています。 レッスン 1:新しい BlackBerry プロジェクトの設定を参照してください。

 ♦ タスク
  1. HomeScreen クラスを更新して制御を追加します。

    [Package Explorer] ウィンドウの HomeScreen.java をダブルクリックしてから、getDataAccess メソッドを呼び出す try-catch 文の前に次のコードを挿入します。



            // Add an edit field for entering new names
            _nameEditField = new EditField( "Name: ", "", 50, EditField.USE_ALL_WIDTH );
            add (_nameEditField );
    
            // Add an ObjectListField for displaying a list of names
            _nameListField = new ObjectListField();
            add( _nameListField );
    
            // Add a menu item
            addMenuItem(_addToListMenuItem);
  2. _nameEditField_nameListField のクラスレベルの宣言を追加してから、run メソッドで MenuItemを定義します (現在は空です)。これらの宣言は、_statusLabel_da の宣言の次にあります。

    次のコードを private DataAccess _da; 文の下に挿入します。

        private EditField _nameEditField;
        private ObjectListField _nameListField;
    
        private MenuItem _addToListMenuItem = new MenuItem("Add", 1, 1){
            public void run() {
                // TODO
            }
        };
  3. テーブルにローを挿入する DataAccess クラスに新しいメソッドを追加します。

    [Package Explorer] ウィンドウの DataAccess.java をダブルクリックしてから、createDatabaseSchema メソッドの後ろに次のコードを挿入します。



        public void insertName(String name){
            try {
                UUIDValue nameID = _conn.createUUIDValue();
                String sql = "INSERT INTO Names(ID, Name) VALUES(?, ?)";           
                PreparedStatement ps = _conn.prepareStatement(sql);
                ps.set(1, nameID);
                ps.set(2, name);
                ps.execute();
                _conn.commit();
                ps.close();
            }
            catch(ULjException uex) {
                Dialog.alert("ULjException: " + uex.toString());
            }
            catch( Exception ex ){
                Dialog.alert("Exception: " + ex.toString());
            }  
        }
  4. プロジェクトに NameRow クラスを追加します。

    1. [Package Explorer] ウィンドウで、HelloBlackBerry を展開して [src] をクリックします。

    2. [File] » [New] » [Class] をクリックします。

      [New Java Class] ウィンドウが表示されます。

    3. [Name] フィールドに NameRow と入力します。

    4. [Finish] をクリックします。

      NameRow.java ファイルが [Package Explorer] ウィンドウで作成中のプロジェクトの下に表示されます。

  5. Names テーブルにオブジェクトとしてローを格納できるように、NameRow クラスを更新します。

    [Package Explorer] ウィンドウの NameRow.java をダブルクリックしてから、次の抜粋部分とコードを置き換えます。



    class NameRow {
        
        public NameRow( String nameID, String name ) {  
            _nameID = nameID;
            _name = name;
        }
        
        public String getNameID(){
            return _nameID;
        }
        
        public String getName(){
            return _name;
        }
           
        public String toString(){
            return _name;
        }
        
        private String _nameID;
        private String _name;
        
    }

    toString メソッドは、ObjectListField コントロールによって使用されます。

  6. オブジェクトのベクトルにローを読み込む DataAccess クラスに新しいメソッドを追加します。

    [Package Explorer] ウィンドウの DataAccess.java をダブルクリックしてから、insertName メソッドの後ろに次のコードを挿入します。



        public Vector getNameVector(){
            Vector nameVector = new Vector();
            try {
                String sql = "SELECT ID, Name FROM Names";
                PreparedStatement ps = _conn.prepareStatement(sql);
                ResultSet rs = ps.executeQuery();
                while (rs.next()) {
                    String nameID = rs.getString(1);
                    String name = rs.getString(2);
                    NameRow nr = new NameRow(nameID, name);
                    nameVector.addElement(nr);
                }
            }
            catch(ULjException uex) {
                Dialog.alert("ULjException: " + uex.toString());
            }
            catch(Exception ex) {
                Dialog.alert("Exception: " + ex.toString());
            }
            return nameVector;
        }
  7. 画面に表示されているリストの内容を再表示する新しいメソッドを HomeScreen クラスに追加します。

    [Package Explorer] ウィンドウの HomeScreen.java をダブルクリックしてから、_addToListMenuItem メソッドの後ろに次のコードを挿入します。



        public void refreshNameList() {
            //Clear the list
            _nameListField.setSize(0);
    
            //Refill from the list of names
            Vector nameVector = _da.getNameVector();
            for( Enumeration e = nameVector.elements(); e.hasMoreElements(); ){
                NameRow nr = ( NameRow )e.nextElement();
                _nameListField.insert(0, nr);
            }
        }
  8. refreshNameList メソッドを呼び出せるように HomeScreen クラスを更新して、アプリケーションが開始したときにリストに値が入っているようにします。

    HomeScreen コンストラクタの最後の前に次のコードを挿入します。

            // Fill the ObjectListField
            refreshNameList();
  9. 画面のリストにローを追加する新しいメソッドを HomeScreen クラスに追加します。

    次のコードを refreshNameList メソッドの後ろに挿入します。

        private void onAddToList(){
            String name = _nameEditField.getText();
            _da.insertName(name);
            this.refreshNameList();
            _nameEditField.setText("");
            _statusLabel.setText(name + " added to list");
        }
  10. onAddToList メソッドを呼び出すように、HomeScreen クラスの run メソッドを更新します。

    \\ TODO を示すコードの行を次のコード抜粋と置き換えます。

                onAddToList();
  11. [ファイル] » [すべて保存] をクリックします。

  12. シミュレータを実行して、アプリケーションがコンパイルされ、実行されることを確認します。

    [Package Explorer] ウィンドウで Application.java をクリックしてから、[Run] » [Run As] » [BlackBerry Simulator] をクリックします。

    注意

    ワークスペースで複数のプロジェクトを開いている場合は、[Run] » [Run Configurations] をクリックし、HelloBlackBerry を選択してから [Run] をクリックします。

    HelloBlackBerry プロジェクトがコンパイルされ、シミュレータウィンドウが表示されます。

    Eclipse の [Problems] タブを選択して、プロジェクトがエラーなくコンパイルされたことを確認します。

  13. シミュレータメニューで、[File] » [Load Java Program] をクリックします。

  14. SQL Anywhere インストール環境の \UltraLite\UltraLiteJ\BlackBerry4.2\ ディレクトリに移動して、UltraLiteJ16.cod ファイルを開きます。

    注意

    場合によっては、アプリケーションを実行するために、UltraLiteJ16.cod と DBG ファイルを作業用のシミュレータディレクトリ (C:\Eclipse\plugins\net.rim.ejde.componentpack6.0.0_6.0.0.0.26\components\simulator\ など) にコピーする必要があります。コピーが完了したら、シミュレータメニューから Java プログラムをロードする必要はありません。

  15. シミュレータメニューで、[Simulate] » [Set IT Policy] をクリックします。

    [Set IT Policy] ウィンドウが表示されます。

  16. [Policy] フィールドで、[Allow Third Party Apps To Use Persistent Store] » [>>] をクリックします。

  17. [Set] をクリックしてから、[Close] をクリックします。

  18. アプリケーションを起動します。

    シミュレータウィンドウで、[Downloads] に移動してから HelloBlackBerry アプリケーションを実行します。

    Hello BlackBerry タイトルバー、Status: Connected テキスト、Name フィールドを示す画面が表示されます。

  19. [Name] フィールドに John Smith と入力します。

  20. *EMPTY* をクリックし、Add を選択します。

    リストに John Smith が表示され、これは、データベースの Names テーブルに追加された名前のエントリを示しています。

    名前は、追加した時点でデータベースに格納されます。アプリケーションを閉じたり再度開いたりするときに、名前がデータベースから検索され、リストに追加されます。

  21. シミュレーションを停止します。

    シミュレータウィンドウで、[File] » [Exit] をクリックします。

結果

入力されたデータは、Ultra Light Java データベースの Names テーブルに挿入されます。