Windows Phone OS 7.1,可以将关系数据存储在驻留在应用程序独立存储容器的本地数据库中。Windows Phone 应用程序使用 LINQ to SQL 执行所有数据库操作;LINQ to SQL 用于定义数据库架构、选择数据,并将更改保存到驻留在独立存储中的基础数据库文件;提到LINQ to SQL,你会不会感到欣喜,It’s amazing在window phone里我们居然可以这样来持久化数据 :),本文将带领大家一同建立第一个windows phone本地数据库应用--联系人管理。
本系列包括以下:
1.数据库创建
2.从独立存储中找到数据库文件并copy到pc上
3.复用2中的数据库(其他程序使用2中的数据库文件或者使用2中初始的数据)
前一篇已经向大家介绍了,mango中的本地数据库使用linq to sql建库、建表以及初始化内置数据,并对库进行增删改查;很多人要问了,可是我们创建的库在哪里呢,我其他的应用怎否使用这个库,因为需要share数据,或者我用一二程序专门来维护数据库里的内置数据,我其他的应用来使用这个维护好的数据库可以吗?答案是当然可以,其实我们之前创建的程序可以称之为帮助器应用程序,因为我们只是使用它来建库、建表、初始化内置数据、或者维护里面的数据;但是最终发布到应用市场并给用户真正使用的库,肯并不能在用户首次打开应用时创建,那样代价太高;今天我们主要是找出上一篇中我们创建出的数据库物理文件,然后把它copy到我们的pc上,有了物理文件,在下一篇我会介绍如何在其他应用里引用这个数据库;
好了,let 's go.
要想找到我们创建的数据库物理文件,需要使用微软提供的独立存储资源管理器(ISETool.EXE),它是一个在windows phone sdk里的命令行工具。使用它可以列出、复制和替换独立存储中的文件和目录(独立存储只允许当前应用访问);
要想使用独立存储资源管理器,必须在迷你器或者测试机里安装我们的应用,并且模拟器或测试机处于运行状态;它的文件目录在:
-
Program Files\Microsoft SDKs\Windows Phone\v7.1\Tools\IsolatedStorageExplorerTool
-
Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Tools\IsolatedStorageExplorerTool
它支持的一些命令选项有:
ts |
(拍摄快照)将独立存储中的文件和目录从设备或模拟器复制到您的计算机。 |
rs |
(还原快照)使用您计算机中的文件和目录替换设备或模拟器上独立存储中的文件和目录。 |
dir |
列出独立存储的指定目录中的文件和目录。若未指定目录,则列出根目录中的文件和目录。 |
device-folder |
指定目标设备或模拟器上独立存储中的目录。 |
xd |
指示以模拟器为目标。 |
de |
指示以叠接设备为目标。 |
Product GUID |
在要测试的应用程序的 WPAppManifest.xml 文件中指定 ProductID。 |
desktop-path |
指定计算机上写入独立存储文件或从中复制独立存储文件的指定目录。当使用 ts 命令复制文件时,将在 desktop-path 中创建名为 IsolatedStore 的子目录。如果指定的目录已存在,则 ts 命令将重写目录中的内容,而不发出任何警告。 |
好了,那我们开始行动吧:
1.首先找到我们应用的Product Guid:它在 WPAppManifest.xml 中,解决方案中的目录是、
在文件中找到ProductID,我的demo是:ac5b5d62-573c-4134-b290-0ad4f678ad7f
2.将应用发布到模拟器或测试机(我这里运行一遍,这样会有我添加的数据)
3. 使用命令行工具将目录切换到ISETool.EXE的目录,先列出独立存储中的文件目录:
输入的命令为: ISETool.exe dir xd ac5b5d62-573c-4134-b290-0ad4f678ad7f
tips:因为我用的是模拟器所以命令行中都用的是xd(以模拟器为目标),如果您是测试机需要是用de
输出为:
是不是很熟悉,看到我们创建的数据库文件了么?MyContactor.sdf.
4.copy到pc:
输入命令:ISETool.exe ts xd ac5b5d62-573c-4134-b290-0ad4f678ad7f "D:\ISOData"
tips:因为我用的是模拟器所以命令行中都用的是xd(以模拟器为目标),如果您是测试机需要是用de
输出为:
好了,提示成功下载到我们指定的D:\ISOData目录了
5.找物理文件:去D:\ISOData中找我们的独立存储文件
哈哈,如约而至,就是它,我们找到数据库物理文件了,
可惜的是目前没有方法直接open这个物理文件
下一篇将介绍如何在另一个应用引用这里的数据库文件;
Demo,这一篇只是为了找到之前创建的数据库文件,所以demo代码没有任何修改..