SQL Anywhere是一套完整的資料庫應用和伺服器,它可以運作在很多平台上,包括Windows Mobile。使用Visual Studio開發者可以開發運作在Windows Mobile裝置上的資料庫應用。
當為移動裝置做開發時,我曾遇到的最大的問題之一是資料存儲。這裡有兩個問題,第一:我經常跟使用SQL資料庫的伺服器同步化;第二:由于許多裝置不能天然地支援SQL(Android平台除外,因為它有SQLite),是以我希望在我的移動應用中使用與之相關的資料庫。
大概一年前,我開始在我的另一個項目中使用Sybase的SQL Anywhere産品,這玩意給我留下了很深的印象。SQL Anywhere實際上是一套工具,内含有幾個桌面版本,還有一個運作在Windows Mobile上的版本。除此之外還有一個Ultralite版本,可以運作在小一點的Windows CE裝置和Palm OS上;還有Ultralite J版本——J是代表Java,它可以運作在BlackBerry和J2SE(Java 2 Platform Standard Edition)上。
Windows Mobile版本最酷的一點是,開發者在運作Windows Mobile的移動裝置上可以通過SQL擁有完全相關的資料庫存取。使用者完全可以在移動裝置上存儲清單,然後在伺服器上與之同步。對我們來說,這确實是我們想要的功能。
Sybase最近釋出了SQL Anywhere.的version 11。本文我将介紹在Windows Mobile 6裝置上(尤其是一個更新到Windows Mobile 6的HTC/AT&T 8525)配置SQL Anywhere。
Sybase是誰?
大概半年前,我跟我的一個朋友聊天時提到我正在試用Sybase的一個産品,他很驚奇地問道“Sybase?他們沒什麼進步啊。”的确如此,但是盡管他看起來在資料庫領域已經落後于像Oracle、Microsoft SQL Server之類的競争對手,但Sybase仍然是個很強的角色。
我所說的這款産品——SQL Anywhere,出自Sybase的一個名為iAnywhere的子公司,iAnywhere成立于2000年五月,至今已推出了多套産品。
SQL Anywhere還包含了一個免費的Developer版本,本文我也用到了。
Windows Version and Windows Mobile Edition
為了使用Windows Mobile版本,開發者實際需要安裝整個SQL Anywhere的Windows桌面版本,然後在Windows Mobile上安裝Windows Mobile edition。
整個Windows version包括一套開發工具、一個運作在Windows Mobile的.NET組裝。開發者可以在熟悉的Visual Studio環境中使用c#。
幾個小問題
之前我的電腦曾安裝了Visual Studio 2008,但是SQL Anywhere安裝器需要Visual Studio的2005版本做一些附加安裝。而且由于我習慣地将惱人的Vista User Account Control關閉,上周我暫時開了下卻忘記關了。當Visual Studio安裝的時候,我不斷地收到提示告訴我應當在管理者權限下運作。而且由于SQL Anywhere安裝器自動啟動Visual Studio,我無法控制。(今年晚些時候,SQL Anywhere的README檔案談到了在Visual Studio 2008的情況下如何處理。很顯然,SQL Anywhere安裝器是在Visual Studio 2008之前釋出的。看來Sybase應當修複這個問題了。)
我遇到的另一個問題是文檔。SQL Anywhere的文檔是可用的,但是需要單獨下載下傳,這需要你登陸其公司的官方網頁然後使用使用者名和密碼登陸。雖然注冊是免費的,但從軟體的使用性來說這仍是個不小的麻煩。這裡你必須這麼做:安裝軟體後會打開README,然後滾動到相應位置找到Documentation,将連結複制到網絡浏覽器,下載下傳後安裝。這裡,開發者應該指向:C:/Program Files/SQL Anywhere 11/Documentation/en/HTMLHelp 然後打開sqlanywhere_en11.chm 檔案。當開發者終于做完這些的時候,會發現好幾個“Getting Started”文檔。
将SQL Anywhere配置到我的Windows Mobile裝置也是個麻煩事,同樣的也不是功能問題而是不知道怎麼怎麼做,不過通過Sybase網站的論壇我迅速地解決好了。在目錄:C:/Program Files/SQL Anywhere 11/CE/Deployment ,裡面有一個程式叫做cedeploy.exe。(我不知道它是什麼,在Google上搜尋“cedeploy.exe”隻得到七頁結果,而且沒有官方的。幸而這個問題隻是一時的問題,知道怎麼解決就可以了)
在移動裝置上的配置實際上很流暢。有一個公用的CAB檔案,我拷貝到了我的裝置上,運作這個檔案,就可以順利地安裝軟體了。
Building in Visual Studio
如果你熟悉建立資料庫應用,那麼用Visual Studio為Windows Mobile應用建立SQL Anywhere就很簡單。我個人是建立在:C:/Users/Public/Documents/SQL Anywhere 11/Samples/SQLAnywhere/CE/ado_net_sample。
這個例子示範了iAnywhere.Data.SQLAnywhere的名字空間(namespace),它包含了.NET資料庫開發常用的幾種類,例如,名字空間包含SAConnection, SADataAdapter,和SADataReader等類。如果開發者曾在.NET上做過資料庫開發,會明顯到看到這些類和重用資料庫類的差別。
除此之外,開發者可以使用資料邊界(data-bound)的控制如DataGrid,換言之,如果你有了基礎,在Windows Mobile裝置上使用SQL Anywhere不需要學習太多。
建構執行個體應用很順利,由于我使用的是Visual Studio 2008,Visual Studio會因為SQL Anywhere需要的是Visual Studio 2005而做轉換,不過這種轉換也很順利。
我編譯了這個項目沒有發現任何錯誤。我試着在仿真器上運作,但由于libraries不在仿真器上是以發現了許多runtime錯誤。坦白說,我不确定這些問題是因為SQL Anywhere在安裝時要求的是Visual Studio 2005而我用的是2008,還是因為其他問題。但是除了對此問題的追根問底,我決定直接在現實的裝置上運作。過去,我發現在現實的裝置上運作和在仿真器上運作沒有什麼差別,是以有時我直接跳過仿真器這一步。
我沒有采用在Visual Studio上使用配置,我直接在存儲卡上的Windows Mobile複制了執行程式。在裝置上,我從文檔管理程式運作執行程式并運作順利。
我點選“connect”按鈕,出現錯誤顯示無法連結到資料庫,想起來了,因為我沒有啟動伺服器,我的錯。是以我關了應用,到SQL Anywhere目錄下啟動伺服器。伺服器相當配合,我點選按鍵來浏覽樣例資料庫,為資料庫提供連結名,并最終運作。從資料庫的啟動伺服器提供一個小的控制台顯示log資訊,到最終結束這個控制台顯示資料庫一切就緒聽候差遣。