|
在上一篇多樣化實現Windows Phone 7本地數據庫訪問<上>采用兩種方式Effproze和SQlite來驗證Window Phone 7訪問本地數據庫.驗證結論是可行的. 得到圓友及時反饋當然也發現一些細節上問題. 例如Effproze利用文件/內存模式 找不到指定的硬盤上數據庫文件. Sqlite中支持Windows Phone 7 API沒有相關文檔. 以及SQlite創建后類似Effproze找不到指定存儲文件等?類似這些問題 正在尋找和驗證相關解決方案 稍后我會專門整理出一篇文章來詳細說明. 本篇將繼續驗證Windows Phone 7訪問本地數據庫其他方式-Windows Phone DB
<1>初識Windows Phone DB
其實看到Windows Phone DB[以下簡稱WPDB]很偶然機會.當時我正在研究另外一家英國移動軟件開發集成商自己做的開源數據庫方式實現對WP7本地數據庫訪問.[詳細見Windows Phone 7 gets open source database]時碰見WPDB的. 一個群組UK-Grouper 的DVP向我推薦Windows Phone DB.
WPDB是利用Silverlight的獨立存儲[IsolatedStorage]機制為WP7訪問數據庫加以支持. 目前的版本只是針對開發人員. 使用簡單. 開源. 其實它內部存儲數據的實質就是利用IsolatedStorage. Silverlight的IsolatedStorage是一種類似Cookie的靜態存儲機制.可以將一些基本類型(String,Int)的信息甚至是自定義類型序列化后的靜態存儲于客戶端文件中.
獨立存儲[IsolatedStorage]是一個局部信任機制. 什么叫局部? 當你創建一個Silverlight應用程序時會在硬盤上創建相應獨立的存儲區域. 這里面獨立是相對于不同Silverlight Project而言的. 當然如果應用程序中存在多個程序集[Project],那么存儲空間在這多個程序集之間是共享的.
Silverlight限制了客戶端Silverlight應用程序不能訪問全部的文件系統,只能通過獨立存儲機制提供虛擬文件系統,訪問數據流對象. 這樣一來類似我們Application 有了自己一塊硬盤空間一樣.獨立存儲空間內就可以放置任意類型的文件. XML /.txt等. 4版本中空間大小也是可以控制的. 更多資源請參考.Introduce IsolatedStorage MSDN 由此也能看出Silverlight也涵蓋WP7日常開發 當然還有Silverlight能做還不止這些 如下圖:Silverlight 涵蓋圖。
<2>Windows Phone DB給我們帶來什么?
先不著急回答這個問題.WPDB是開源的 你在可以在CodePlex上下載它相關源碼:DownLoad on the CodePlex: Windows Phone DB[源碼下載]
下載完源碼用VS工具打開.預覽整個Solutions:
Solutions中包含兩個項目: 第一個為WPDB的源碼項目 下面是對WPDB測試項目. 二者關系是測試項目對源碼項目采取了引用. 先不管那么多運行起來看看效果:
頁面只有一個Run tests按鈕. 點擊后運行提示Test Completed 測試完成 我們來看Button按鈕下事件下代碼的調用:[注釋是自己添加的]
private void RunTests_Click(object sender, RoutedEventArgs e)
{
//獲取測試項
foreach (var item in ResultPanel.Children)
{
if (item is TextBlock)
{
((TextBlock)item).Foreground = new SolidColorBrush(Colors.White);
}
}
CreateDBTest();//創建DataBase
CreateTableTest();//Create Table
SaveTest();//Save Config
SaveSingleTableTest();//保存單表
OpenTest();//打開數據庫
AddRangeTest();//添加一個范圍數據[20條]
RemoveRangeTest();
RemoveRangeConditionTest();
SaveFailsTest();//保存記錄
SaveWithEncryptionTest();//保存加密后數據-[看來還考慮加密]
OpenWithEncryptionTest();//打開機密數據
SelectConditionTest();
LazyLoadingTest();//還有延遲加載-[很意外啊]
AddRowToExistingTableTest();//添加一行數據庫
AddRowToExistingTableTestLazyLoad();
DatabaseExists();//關閉數據庫鏈接
//測試完成提示
MessageBox.Show("Test completed", "Silverlight Phone Database", MessageBoxButton.OK);
}
it知識庫:多樣化實現Windows Phone 7本地數據庫訪問&lt;下&gt;,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。