WEB开发网
开发学院数据库DB2 用WebSphere Studio Device Developer开发一个基于... 阅读

用WebSphere Studio Device Developer开发一个基于DB2 Everyplace V8.1的Palm OS应用

 2009-11-16 00:00:00 来源:WEB开发网   
核心提示:简介本文描述了如何使用WebSphere Studio Device Developer (WSDD)为掌上设备开发DB2 Everyplace 应用程序,DB2 Everyplace产品自己本身拥有一项快速开发工具,用WebSphere Studio Device Developer开发一个基于DB2 Everypl

简介

本文描述了如何使用WebSphere Studio Device Developer (WSDD)为掌上设备开发DB2 Everyplace 应用程序。DB2 Everyplace产品自己本身拥有一项快速开发工具,即DB2 Everyplace Mobile Application Builder (MAB)。 它是一个能被用来定制移动应用程序的视觉创作工具,所支持的移动平台包括基于Palm OS 以及Java Virtual Machine的设备。MAB作为DB2 Everyplace Software Development Kit (软件开发工具包)的一部分,无须额外付费就可以免费下载。

除了使用MAB作为开发工具外,本文还介绍了另一个开发环境IBM WSDD,它可以代替MAB 为掌上设备开发基于Java 的DB2 Everyplace 应用程序。

本文还讲述了如何使用WSDD来建立MIDP应用程序和可在DB2 Everyplace 关系型数据库(VNURSE sample)访问数据 的MIDlet,以及如何在Palm OS设备上配置MIDlet。

DB2 Everyplace V8.1概述

DB2 Everyplace是移动设备上的关系型数据库。 它由三个主要部分组成: the DB2 Everyplace 关系型数据库, DB2 Everyplace Sync 服务器以及DB2 Everyplace Mobile Application Builder。

有了DB2 Everyplace,你可以通过使用Java Database Connectivity (JDBC)直接访问DB2 Everyplace数据库中的关系型数据在普及设备上开发Java应用程序,在DB2 Everyplace数据库与企业关系型数据库之间双向同步传递数据。本文所提供的应用程序举例仅显示了如何编辑一个MIDlet 来访问DB2 Everyplace的关系型数据 。不久的将来我们会向您展示如何使用含有isync4j的 sync API 开发MIDlet。

MIDP的 概念

MIDP 是由Mobile Information Profile Expert Group (MIDPEG) JSR-000037 Mobile Information Device Profile (MIDP)产生的一个J2ME Profile。它已被证明为移动信息设备(含J2ME的移动电话和一定范围的 PDA)上的主要Java编程模型。MIDP 的主机配置采用CLDC。

MIDP for Palm OS 是基于Palm OS手提设备上的 JavaTM 运行时间环境 。它使得Palm OS的用户能够运行与其它MIDP兼容设备(例如移动电话和寻呼机)相同的Java应用程序。MIDP 遵守Palm OS 用户界面协议,将用户的培训需求降至最低。WSDD为MIDP for Palm OS 提供了开发环境。

现在有两种MIDP API,分别叫做高层API和低层API。高层API是为需要在很多设备(例如不同屏幕大小和输入方法)间移植的应用程序设计的,为了实现移植,它具备高度的可取性。低层API 让您可以完全访问设备屏幕、键盘以及指示器活动(改善其外观和感觉),但牺牲了移植性。

普通的 MIDlet 包括三个主要方法:startApp(), pauseApp()和 destroyApp(),您将在本文提供的源代码中见到。

使用WSDD 开发MIDP应用程序的过程

建立Java源代码

建立开发过程,确定设备环境

编辑应用程序

将应用程序打包至特定目标下的一个 JXE 或 JAR文件

启用

开始使用WSDD为Palm OS设备开发 DB2 Everyplace MIDlet

WebSphere Studio Device Developer的使用:

WebSphere Studio Device Developer 让您可以:

建立 Device Developer 应用程序并在本地运行

建立MIDlet Suites并在本地(MIDlet 模仿器)运行

建立架构并在嵌入式和手提式目标操作系统(例如Palm OS 和 Pocket PC)中启用

在不同目标设备上启用并调试应用程序。

WebSphere Studio Device Developer 包含以下几项组件:

Device Developer 工作台组件

建立和启用编码工作台组件

MIDP工作台组件

MicroAnalyzer 工作台组件

C Development Tooling (CDT) 工作台组件

Device Developer工作台组件包括J9 运行环境 (基于 JDK 1.3 规范),开发环境(Window或Linux)工具包,以及在应用程序预先链接Class所用到的SmartLinker工具。WSDD还为诸如以下这些不同操作系统和处理器提供运行时间和工具包:

Palm OS

Pocket PC

Red Hat Linux

Windows 32-bit 平台

必备条件

在进行开发之前,您需要安装和调试好WSDD、Palm OS 模仿器 和DB2 Everyplace V8.1 SDK。然后根据以下步骤建立开发环境。

安装WSDD的评估版

从以下网址下载WSDD http://www.embedded.oti.com/wsdd/.

如果您的机器上已安装了WSAD ,您可以在另一个目录下安装WSDD 。

安装 DB2 Everyplace V8.1 SDK

DB2 Everyplace V8.1 SDK可从IBM网站免费下载。软件包包含了DB2 Everyplace数据库引擎 的评估拷贝。

您可以选择在Windows 目录下安装DB2 Everyplace V8.1 SDK ,但本文假设您将其安装在"C:\DB2EveryPlaceSDK"

安装Palm OS Emulator (POSE)和ROM 文件

这里介绍POSE的安装步骤。在安装完DB2 Everyplace V8.1 SDK后,您可以在DB2 Everyplace SDK产品目录中找到Palm模仿器文件 (emulator-win.zip), install_directory\SDK\ApplicationBuilder\Toolkits\Palm Development\MAB_prereqs。 将文件解包至所选目录 (例如. c:\PalmDev), 然后解包MAB_prereqs 目录下的pilrc.zip至目标目录c:\PalmDev。pilrc 资源编辑器 (pilrc.exe) 和 Palm 模仿器(emulator.exe) 将在建立Palm OS设备上的 WSDD 环境时使用。

您可在以下网址下载Palm developer 区域最新发布的Palm OS Emulator : http://www.palmos.com/dev

在解包 emulator-win.zip 文件后,您在目标目录下会发现以下文件。

文件名描述
Emulator.exePalm OS Emulator 主要可执行文件
Emulator_Profile.exePalm OS Emulator新增 profiling 设施
ROM Transfer.prcPalm OS 应用程序,用来 将 ROM图像从手提设备转换到桌面
Docs (目录)Palm OS Emulator 文档,包括: UsingPalmOSEmulator.pdf

下载ROM image

除了Palm OS Emulator 可执行文件,您还需要 ROM image来运行Palm OS Emulator。ROM image包括Palm OS特定版本的所有代码。您可以从以下网址的Palm Resource Pavilion下载ROM image(http://www.palmos.com/dev),您也可以让Palm OS 模仿器从放在手提吊架中并连接桌面电脑的手提设备下载ROM image(请参照用户手册中的指示:欲知详情使用Palm OS Emulator)。本文讨论如何从Palm Resource Pavilion下载ROM image 文件。

Resource Pavilion 是为Palm OS Developer Program注册会员提供的区域。您可以在开发者网站找到加入Palm OS Developer Program的说明。

建立 Palm OS Emulator

在c:\PalmDev双击emulator.exe,启动模仿器。在跳出的窗口选择New 来启动一个新的 emulator session。在New Session窗口,选择你从Palm Resource Pavilion下载 ROM 文件的位置。

用WebSphere Studio Device Developer开发一个基于DB2 Everyplace V8.1的Palm OS应用

完成以后将emulator session保存到选择目录,例如 c:\PalmDev\run1.psf

在Palm Emulator上手动安装DB2 Everyplace V8.1 及其样例 (VNURSE) 数据库

双击c:\PalmDev目录下的run1.psf,取出你保存的 emulator session

右击emulator 并选择Install Application\Database > Other

从 DB2 Everyplace SDK目录选择以下DB2 Everyplace 文件:
C:\DB2EveryPlaceSDK\Clients\PalmOS\database\DB2eCat.prc
C:\DB2EveryPlaceSDK\Clients\PalmOS\database\DB2eCLI.prc
C:\DB2EveryPlaceSDK\Clients\PalmOS\database\DB2eComp.prc
C:\DB2EveryPlaceSDK\Clients\PalmOS\database\DB2eDMS.prc
C:\DB2EveryPlaceSDK\Clients\PalmOS\database\DB2eRunTime.prc
C:\DB2EveryPlaceSDK\Clients\PalmOS\database\Samples\en_US\SampleCLP.prc
C:\DB2EveryPlaceSDK\Clients\PalmOS\database\QBE\QBE\en_US\QBE.prc
C:\DB2EveryPlaceSDK\Clients\PalmOS\database\Samples\en_US\NurseInit\NurseInit.prc

文件名描述
DB2eCat.prcDB2 Everyplace 数据库引擎
DB2eCLI.prcDB2 Everyplace 数据库引擎
DB2eComp.prcDB2 Everyplace 数据库引擎
DB2eRunTime.prcDB2 Everyplace 数据库引擎
DB2eDMS.prcDB2 Everyplace 数据库引擎
SampleCLP.prcDB2 Everyplace Command Line Processor
QBE.prcQuery-by-Example
NurseInit.prcVisiting Nurse 初始程序

另一种方法是使用DB2 Everyplace V8.1提供的Install on Mobile Devices 工具安装以上文件。安装步骤将在下一部分介绍。

使用Install on Mobile Devices 工具在Palm Device上安装DB2 Everyplace V8.1 及其样例 (VNURSE) 数据库

注:如果已进行上述"在Palm Emulator上手动安装DB2 Everyplace V8.1 及其样例 (VNURSE) 数据库",您可以跳过这个步骤直接进入下一个步骤:"建立一个Device Developer项目"。以下的流程虽然使用了模拟器,但仍能真实反映您第一次在手提设备上使用Palm Desktop HotSync功能安装DB2 Everyplace代码时所经历的实际步骤。

在安装 DB2 Everyplace库和样例程序之前,您需要在emulated session中启动 HotSync 支持。在未连接网络状态下,按照如下方法启动POSE中的 HotSync 操作。

首先,您需要在桌面电脑安装HotSync Manager,然后配置Emulator来访问运行着HotSync Manager的电脑。在这个例子中,HotSync Manager 和 emulator 是在同一部电脑上运行的。

从网址 http://www.palm.com/support/downloads/win_desktop.html可以下载包含 HotSync Manager 的Palm Desktop Software for Windows。

注册后按照提示下载Palm Desktop Software。下载后,将文件解包并在Windows环境下安装 Palm Desktop software 。

在POSE上安装HotSync设置

1.在Windows环境下安装完毕 Palm Desktop Software , HotSync Manager 应该已存在。

2.配置 POSE ,使 NetLib Calls 转去 TCP/IP

双击 run1.psf 启动 emulator session

右击emulator

在跳出菜单选择 Setting > Properties.

在 Properties 对话框,单击 Redirect NetLib Calls to TCP/IP 检验栏, 单击OK 保存已改变的属性。

用WebSphere Studio Device Developer开发一个基于DB2 Everyplace V8.1的Palm OS应用

3. 在模仿设备(POSE)上配置HotSync 。

在手提应用程序启动器上,按下 HotSync 应用程序使之打开。

按下 Menu ,显示 HotSync 应用程序菜单。

选择Options>Modem Sync Prefs...

用WebSphere Studio Device Developer开发一个基于DB2 Everyplace V8.1的Palm OS应用

在 Modem Sync Preferences 对话框,按下 Network 键, 按下 OK 键保存已改变的参数。

按下 Menu,再次显示应用程序菜单。

选择 Options>LANSync Prefs...

在 LANSync Preferences 对话框,按下 LANSync 键,按下 OK 键保存已改变的参数。

按下 Menu ,再次显示应用程序菜单。

选择Options>Primary PC Setup...

在 Primary PC Setup对话框,输入 Primary PC Address (中间输入行):

因为我们在同一电脑Windows 系统下运行 POSE 和 HotSync manager , 输入 '127.0.0.1'. 按下 OK 键保存已改变的参数。

用WebSphere Studio Device Developer开发一个基于DB2 Everyplace V8.1的Palm OS应用

在 HotSync 应用程序中,按下 Modem。然后按下在Modem Sync 图标下的 Select Service键,选择 Windows RAS。

用WebSphere Studio Device Developer开发一个基于DB2 Everyplace V8.1的Palm OS应用

在 Preferences 对话框,按下Tap 输入电话。在 Phone Setup 对话框,在Phone #输入区输入 00 。按下 OK 键,再按下 Done键。

用WebSphere Studio Device Developer开发一个基于DB2 Everyplace V8.1的Palm OS应用

在HotSync对话框中间按下HotSync图标 来启动 HotSync 操作。

使用以下安装工具来安装 DB2 Everyplace库和样例程序:

4. 在 移动设备上单击 Start > Program > IBM DB2 Everyplace > Install。打开移动设备工具的安装功能。

5. 在 Select a Mobile Device Platform 窗口,选择您移动设备的操作系统,并单击 OK。

6. 对于Palm OS 移动设备,选择您将要安装DB2 Everyplace的用户。

7. 对于Palm OS 移动设备,如果移动设备具有彩色显示,选择 Check this if this device displays colors 。

8. 选择您想要安装的DB2 Everyplace 组件。

9. 单击 OK。

10. 在 POSE上进行 HotSync 操作,在 HotSync 对话框中间位置按下 HotSync 图标,将文件传送至模拟器。

建立一个Device Developer项目

在这一部分,将会学习如何 建立一个在具备DB2 Everyplace V8.1的VNURSE 数据库访问数据的 MIDlet。

1. 在 工作台工具行,单击 Open the New Wizard

2. 在左半窗口,选择 J2ME for J9。在右半窗口,选择 Create MIDlet Suite。然后单击Next。

用WebSphere Studio Device Developer开发一个基于DB2 Everyplace V8.1的Palm OS应用

3. 在 MIDlet Suite Creation wizard中,为新项目输入以下名称:

Project name:DB2eMIDP Project
MIDlet suite name:DB2eMIDP
MIDlet name:DB2eMIDP
Package:com.ibm.pic.demo
MIDlet class name:DB2eDemo

单击Finish。您已建立MIDlet class 模板。

4. 在工作台上,将+号扩展至DB2eMIDP左边,可以看到已建立以下文件和文件夹:

Src: java 源代码被引入此目录

IVEHOME/lib/jclMidp/classes.zip

IVEHOMR/lib/cjarconv.zip

DB2eMIDP Project.jad

5. Wsddbuild.xml: 这是 Ant script file ,用来定义和建立启动程序。

6. 引入 java 源代码:单击src 文件夹(DB2eMIDP 项目的文件夹)下的 com.ibm.pic.demo, 然后单击菜单项 File > Import. 选择 File 系统作为引入源, 然后单击 Next。 单击 Browse 键,在目录下 选择将要引入的以下5 个java 文件。 单击 Finish 完成操作。

AboutAlert.java

DataList.java

DB2eDemo.java

ImageCanvas.java

PICIntroCanvas.java

7. 引入图像文件: 您还需要引入src目录下的图像。请按照以下步骤来做。这与引入java 代码相似。首先,建立一个用来保存图像的文件夹。因为样例来源中它是硬代码,文件夹的名称为 /icons。 在 Navigator窗口, 右击 src文件夹, 选择 New>Other>Simple>Folder。 在新的 Folder 屏幕, 输入与文件夹名称同样的图标。现在您在src下有了图标文件夹。按照以下步骤引入图标:

单击DB2eMIDP项目 src文件夹下的图标文件夹,然后单击菜单项File > Import。选择文件系统作为引入源 ,然后单击 Next。 单击 Browse 键显示目录, 选择以下3个图像作为引入对象。单击 Finish结束操作。

App.png

Duke.png

JavaPowered-8.png

用WebSphere Studio Device Developer开发一个基于DB2 Everyplace V8.1的Palm OS应用

8. 引入 DB2 Everyplace java.sql 包、 JDBC 驱动器并设置建立路径: 因为演示来源须访问DB2 Everyplace数据库,我们必须引入 JDBC 驱动器和其它java.sql 包。 按照以下步骤来完成此项操作:

在 查看Package时单击Db2eMIDP Project,然后单击菜单项 File > Import

选择文件系统作为引入源并单击 Next

单击 Browse键查看目录,选择 <DB2eSDK>\Clients\PalmOS\database\JDBC\cldc 文件夹并单击 OK

将cldc 文件夹扩展到左边窗口,选择cldc\lib下的 java 和 com 检查栏(不要选择在 com\ibm\db2e下面的 app 检查栏), 单击Finish。

用WebSphere Studio Device Developer开发一个基于DB2 Everyplace V8.1的Palm OS应用

9. 在查看Packages时右击项目,然后单击 "Properties".

10. 单击左边窗口 的"Java Build Path"和右边窗口 的Libraries 。 单击 "Add Folder", 在Class Folder Selection 屏幕, 将 DB2eMIDP Project 扩展并选择 lib 文件夹。 单击 OK 键,完成Add Folder 操作。

用WebSphere Studio Device Developer开发一个基于DB2 Everyplace V8.1的Palm OS应用

运行DB2eDemo 应用程序

给 Palm OS 设置WSDD 参数

现在您已正确设置了样例应用程序,下一步就要在WSDD环境中测试应用程序。因为样例是为Palm OS设备设计的,我们需要给Palm OS 设置WSDD参数。

在菜单行选择 Window > Preferences

单击Device Developer元素边上的 + 来扩展它。

选择Palm OS Java Configuration 页面。

在 Emulator Run Arguments 和 Emulator Debug Arguments 区域, 输入以下内容:

Emulator Run Arguments:    -psf    path\run1.psf

Emulator Debug Arguments:    -psf    path\debug.psf 这里的 path 指的是通往2个PSF文件完全合格的路径, (例如, C:\PalmDev\run1.psf)

设置页面中的其它选项,使之与您的开发环境和Palm OS设备匹配。

用WebSphere Studio Device Developer开发一个基于DB2 Everyplace V8.1的Palm OS应用

在Palm OS Emulator 上建立Build & Launch

在搭建或启动一个 DB2eMIDP 项目前,您必须正确设置它。

在 Navigator 窗口,单击 DB2eMIDP 项目边上的 + 来扩展此项元素。

双击 wsddbuild.xml 文件,在编辑器中打开它。

在编辑器的 Build 标签上,单击Add 来新增一个Build。
选择J9 for Palm 68k 作为平台,然后单击 Next。

用WebSphere Studio Device Developer开发一个基于DB2 Everyplace V8.1的Palm OS应用

将 creator ID设置成 DB2e ,程序名称( application name )为 DB2eDemo,然后单击 Next。

Jxelink Options页面按缺省设置。然后单击 Next。

在 Select Mode and Launcher页面,选择 PrcApplication on Palm OS emulator, 然后单击Next。

Launch Attributes 页面按缺省设置, 然后单击Next。

customize Launch Target页面按缺省设置。然后单击Finish。

在 查看Packages 时将 palm68k 文件夹扩展,双击 DB2eMIDP 中的Project.jxeLinkOptions。

在 DB2eMIDP Project.jxeLinkOptions的编辑器中, 单击 in/exclusion ,在下拉菜单中, 选择 "include whole classes", 然后单击 "new" 键。

按规定样式输入 "com.ibm.db2e.jdbc.DB2eDriver", 单击 OK 和 Cntl-S保存改变的设置。

在下拉菜单选择 "include resources", 单击 "new" 键,按规定样式输入"icons/App.png", 然后单击 OK保存改变的设置。

重复以上关于 "icons/Duke.png" 和 "icons/JavaPowered-8.png"的步骤。

用WebSphere Studio Device Developer开发一个基于DB2 Everyplace V8.1的Palm OS应用

现在可以打包应用程序和图像。

按以下步骤在 PalmOS emulator运行应用程序:

In the edition for wsddbuild.xml, 单击 Launches 键

选择 "Launch - Run and Debug palm68k/DB2eMIDP Project.prc as Prc Application on PalmOS emulator", 然后单击 Run 键。出现一个 Palm OS emulator 窗口。

按下图标 DB2eDemo ,您将看到以下画面

用WebSphere Studio Device Developer开发一个基于DB2 Everyplace V8.1的Palm OS应用

按下'Query', 'Intro','About'您就可以尝试演示程序 。 'Query' 可以用来选择VNPERSON 表中的信息,如果得不到想要的结果,请检查是否已成功安装VNURSE程序,且 在您的PalmOS Emulator上已执行NURSEINIT程序。

用WebSphere Studio Device Developer开发一个基于DB2 Everyplace V8.1的Palm OS应用

只有在您想要在PalmOS设备上从WSDD直接安装程序时, 才需要进行这一步骤。按照以下步骤在PalmOS设备上安装程序:

在 wsddbuild.xml版本中, 单击 Launches 键。

在PalmOS设备上手动选择 "Launch - Run and Debug palm68k/DB2eMIDP Project.prc as Prc Application", 单击 Run 键,出现一个 Palm OS Install Tool 窗口。

用WebSphere Studio Device Developer开发一个基于DB2 Everyplace V8.1的Palm OS应用

按下 "Done",在您的Palm Desktop Install 目录安装 "prc" 文件,此目录在您进行HotSync操作时可传送到您的手提设备。

样例来源描述:

DB2eDemo.java

这是主要程序,后文将详细介绍编程代码。

DataList.java

使用 list object来显示结果。

ImageCanvas.java

这是带有图像的欢迎页面。

PICIntroCanvas.java

这是带有图像的介绍页面。

AboutAlert.java

这是带有图像的介绍页面。

DB2eDemo.java

步骤1:引入DB2 Everyplace Java SQL程序包

import java.sql.*; 
.. 

步骤2:引入CLDC 和MIDP程序包

import javax.microedition.lcdui.*; 
.. 

步骤3:加载DB2 Everyplace JDBC Driver

private static final String driver = "com.ibm.db2e.jdbc.DB2eDriver"; 
.. 

步骤4:激活startApp() method ,启动应用程序

protected void startApp() throws MIDletStateChangeException 
.. 

步骤5:在第一页增加命令键

queryCommand = new Command("Query", Command.SCREEN, 1); 
PICIntroCommand = new Command("Intro", Command.SCREEN, 1); 
aboutCommand = new Command("About", Command.SCREEN, 1); 
.. 

步骤6:选择VNPERSON表中的记录

public String[] getDatalList() { 
.. 
return null; 
} 


注意:List 或是TextBox对象有一个限制,就是每一个被显示的String都必须为非空!特别是使用了array数组变量。

步骤7:激活pauseApp(),将MIDlet设置为暂停状态

protected void pauseApp() { 
} 

步骤8:激活destropApp(),破坏MIDlet,将其设置为破坏状态

protected void destroyApp(boolean flag) throws MIDletStateChangeException { 
dataList = null; 
} 

DB2eDemo主程序:

package com.ibm.pic.demo; 
// Step 1: Import the Java Sql packages 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.Statement; 
import java.io.IOException; 
// Step 2: Import the CLDC and MIDP packages 
import javax.microedition.lcdui.Alert; 
import javax.microedition.lcdui.AlertType; 
import javax.microedition.lcdui.Command; 
import javax.microedition.lcdui.CommandListener; 
import javax.microedition.lcdui.Display; 
import javax.microedition.lcdui.Displayable; 
import javax.microedition.lcdui.Image; 
import javax.microedition.midlet.MIDlet; 
import javax.microedition.midlet.MIDletStateChangeException; 
// The DB2eDemo class extends MIDlet. It also implements CommandListener interface to handle events: 
public class DB2eDemo extends MIDlet implements CommandListener { 
 // Views 
 Display display; 
 ImageCanvas splashCanvas; 
 PICIntroCanvas introCanvas; 
 DataList dataList; 
 AboutAlert aboutAlert; 
 Alert myAlert; 
 // Commands 
 Command queryCommand; 
 Command PICIntroCommand; 
 Command aboutCommand; 
 Command returnCommand; 
 Command exitCommand; 
// Step 3: Load DB2 Everyplace JDBC driver 
 private static final String driver = "com.ibm.db2e.jdbc.DB2eDriver"; 
 private static final String url = "jdbc:db2e:mysample"; 
// Step 4: startApp() method to start the application 
 /** 
 * @see MIDlet#startApp() 
 */ 
 protected void startApp() throws MIDletStateChangeException { 
 display = Display.getDisplay(this); 
 displayOriginalPage(); 
 } 
// Step 7: pauseApp() to put the MIDlet into a paused state. It has to be 
// implemented as our MIDlet is an abstract method in the parent MIDlet class 
 /** 
 * @see MIDlet#pauseApp() 
 */ 
 protected void pauseApp() { 
 } 
// Step 8: destroyApp to put the MIDlet into a destroy state. The reference to 
// the dataList is released by setting it to null. 
 /** 
 * @see MIDlet#destroyApp(boolean) 
 */ 
 protected void destroyApp(boolean flag) throws MIDletStateChangeException { 
 dataList = null; 
 } 
 /** 
 * Respond to a commands issued on any screen 
 */ 
 public void commandAction(Command c, Displayable s) { 
 if (s == splashCanvas) { 
  commandActionSplashCanvas(c); 
 } else if (s == dataList) { 
  commandActionDataList(c); 
 } else if (s == introCanvas) { 
  commandActionIntro(c); 
 } 
 } 
// Step 5: Initialize and add the command buttons on the first screen 
 /** 
 * Display original page 
 */ 
 public void displayOriginalPage() { 
 queryCommand = new Command("Query", Command.SCREEN, 1); 
 PICIntroCommand = new Command("Intro", Command.SCREEN, 1); 
 aboutCommand = new Command("About", Command.SCREEN, 1); 
 returnCommand = new Command("OK and Return", Command.SCREEN, 1); 
 exitCommand = new Command("exit", Command.SCREEN, 1); 
 // Load the picture 
 Image image = null; 
 try { 
  image = Image.createImage("/icons/JavaPowered-8.png"); 
 } catch (IOException ioe) { 
 } 
 splashCanvas = new ImageCanvas(image); 
 splashCanvas.addCommand(queryCommand); 
 splashCanvas.addCommand(PICIntroCommand); 
 splashCanvas.addCommand(aboutCommand); 
 splashCanvas.addCommand(exitCommand); 
 splashCanvas.setCommandListener(this); 
 // Load the Intro canvas 
 try { 
  image = Image.createImage("/icons/Duke.png"); 
 } catch (IOException ioe) { 
 } 
 introCanvas = new PICIntroCanvas(image); 
 introCanvas.addCommand(returnCommand); 
 introCanvas.setCommandListener(this); 
 // Load Data list 
 dataList = new DataList(); 
 dataList.addCommand(returnCommand); 
 dataList.setCommandListener(this); 
 // Load the About canvas 
 aboutAlert = new AboutAlert(); 
 myAlert = new Alert("MIDP Demo", aboutAlert.getCopyright(), null, AlertType.INFO); 
 myAlert.setTimeout(Alert.FOREVER); 
 display.setCurrent(splashCanvas); 
 } 
 /** 
 * Process the splash canvas page's 3 commands 
 */ 
 public void commandActionSplashCanvas(Command c) { 
 String[] data = null; 
 if (c == queryCommand) { 
  // Get Data Here 
  dataList.setDataList(getDatalList()); 
  display.setCurrent(dataList); 
 } else if (c == PICIntroCommand) {  display.setCurrent(introCanvas); 
 } else if (c == aboutCommand) { 
  display.setCurrent(myAlert, splashCanvas); 
 } else if (c == exitCommand) { 
  try { 
  destroyApp(false); 
  }catch(MIDletStateChangeException me ) { 
  } 
  notifyDestroyed(); 
 } 
 } 
 public void commandActionDataList(Command c) { 
 if (c == returnCommand) { 
  display.setCurrent(splashCanvas); 
 } 
 } 
 public void commandActionIntro(Command c) { 
 if (c == returnCommand) { 
  display.setCurrent(splashCanvas); 
 } 
 } 
//Step 6: select records from the VNPERSON table, and retrieve the rows by using 
//the next() method of the java.sql.ResultSet interface 
 /** 
 * Get data from DB2 everyplace -> table : vnperson 
 * Table Structure 
 * ID char(9) 
 * Name varchar(40) 
 * Address varchar(50) 
 * City varchar(30) 
 * HomePhone varchar(20) 
 * WorkPhone varchar(20) 
 * MobilePhone varchar(20)  
 */ 
 public String[] getDatalList() { 
 StringBuffer buffer = new StringBuffer(); 
 String[] list = new String[100]; 
 try { 
  Class.forName(driver); 
  Connection con = DriverManager.getConnection(url); 
  Statement st = con.createStatement(); 
  ResultSet rs = st.executeQuery("SELECT ID,name,address,city FROM vnperson"); 
  int i = 0; 
  while (rs.next()) { 
  buffer.append(" ----- " + rs.getString(1) + ", "); 
  buffer.append(rs.getString(2) + ", "); 
  buffer.append(rs.getString(3) + ", "); 
  buffer.append(rs.getString(4)); 
  list[i] = buffer.toString(); 
  i++; 
  buffer = new StringBuffer(); 
  } 
  String[] returnList = new String[i]; 
  for (int j = 0; j < i; j++) { 
  returnList[j] = list[j]; 
  } 
  rs.close(); 
  st.close(); 
  con.close(); 
  return returnList; 
 } catch (Exception ex) { 
 } 
 return null; 
 } 
} 

本文示例源代码或素材下载

Tags:WebSphere Studio Device

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接