多样化实现Windows Phone 7本地数据库访问<下>

  在上一篇多样化实现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本地数据库访问&amp;lt;下&amp;gt;,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。