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 - Java プログラミング » チュートリアル:BlackBerry アプリケーションの構築 » 第 1 部:新しい BlackBerry アプリケーションの作成

 

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

このレッスンでは、アプリケーションに次のコントロールを追加します。

  • 名前を入力できるテキストフィールド。

  • テキストフィールドの名前をデータベースに追加するためのメニュー項目。

  • テーブル内の名前を表示するリストフィールド。

次に、テキストフィールドに名前を挿入し、リストを更新するためのコードを追加します。

 ♦ ユーザーにデータを要求するためのサンプルアプリケーションの更新
  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. [File] » [Save All] をクリックします。

  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\ ディレクトリに移動して、UltraLiteJ12.cod ファイルを開きます。

    注意

    アプリケーションを実行するには、UltraLiteJ12.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] をクリックします。