簡介
本文描述了如何使用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.exe Palm OS Emulator 主要可執行文件 Emulator_Profile.exe Palm OS Emulator新增 profiling 設施 ROM Transfer.prc Palm 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 文件的位置。
完成以後將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.prc DB2 Everyplace 數據庫引擎 DB2eCLI.prc DB2 Everyplace 數據庫引擎 DB2eComp.prc DB2 Everyplace 數據庫引擎 DB2eRunTime.prc DB2 Everyplace 數據庫引擎 DB2eDMS.prc DB2 Everyplace 數據庫引擎 SampleCLP.prc DB2 Everyplace Command Line Processor QBE.prc Query-by-Example NurseInit.prc Visiting 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 保存已改變的屬性。
3. 在模仿設備(POSE)上配置HotSync 。
在手提應用程序啟動器上,按下 HotSync 應用程序使之打開。
按下 Menu ,顯示 HotSync 應用程序菜單。
選擇Options>Modem Sync Prefs...
在 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 鍵保存已改變的參數。
在 HotSync 應用程序中,按下 Modem。然後按下在Modem Sync 圖標下的 Select Service鍵,選擇 Windows RAS。
在 Preferences 對話框,按下Tap 輸入電話。在 Phone Setup 對話框,在Phone #輸入區輸入 00 。按下 OK 鍵,再按下 Done鍵。
在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。
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
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。
9. 在查看Packages時右擊項目,然後單擊 "PropertIEs".
10. 單擊左邊窗口 的"Java Build Path"和右邊窗口 的LibrarIEs 。 單擊 "Add Folder", 在Class Folder Selection 屏幕, 將 DB2eMIDP Project 擴展並選擇 lib 文件夾。 單擊 OK 鍵,完成Add Folder 操作。
運行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設備匹配。
在Palm OS Emulator 上建立Build & Launch
在搭建或啟動一個 DB2eMIDP 項目前,您必須正確設置它。
在 Navigator 窗口,單擊 DB2eMIDP 項目邊上的 + 來擴展此項元素。
雙擊 wsddbuild.XML 文件,在編輯器中打開它。
在編輯器的 Build 標簽上,單擊Add 來新增一個Build。
選擇J9 for Palm 68k 作為平台,然後單擊 Next。
將 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"的步驟。
現在可以打包應用程序和圖像。
按以下步驟在 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 ,您將看到以下畫面
按下'Query', 'Intro','About'您就可以嘗試演示程序 。 'Query' 可以用來選擇VNPERSON 表中的信息,如果得不到想要的結果,請檢查是否已成功安裝VNURSE程序,且 在您的PalmOS Emulator上已執行NURSEINIT程序。
只有在您想要在PalmOS設備上從WSDD直接安裝程序時, 才需要進行這一步驟。按照以下步驟在PalmOS設備上安裝程序:
在 wsddbuild.XML版本中, 單擊 Launches 鍵。
在PalmOS設備上手動選擇 "Launch - Run and Debug palm68k/DB2eMIDP Project.prc as Prc Application", 單擊 Run 鍵,出現一個 Palm OS Install Tool 窗口。
按下 "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;
}
}
本文示例源代碼或素材下載