-
作者:杨海龙
Andorid 大家都很清楚,它使用的是轻巧、小型的数据库 Sqlite 。而 Windows Phone 7 到目前为止我还没有发现它可以使用数据库为自己的应用程序做数据存储的功能。如果碰到要存取比较多的数据时,很明显独立存储空间 IsolatedStorage 就有点力不从心了。第一篇将介绍如何使用利用 IsolatedStorage 的特性伪实现创建数据库和判断数据库是否存在。创建数据库由于该开源类库是利用 IsolatedStorage 的基础封装的一个数据操作,创建数据库也是遵循了它的使用方法,只是该作者将其封装在了内部,看起来就跟我们实现使用关系型数据库差不多,具体创建数据库代码为:/// <summary>
/// 创建数据库
/// </summary>
private void CreateDBTest()
{
var name = Guid.NewGuid().ToString(); // 使用 Guid 得到一个 name
if (Database.CreateDatabase(name) != null ) // 创建数据库
{
this .CreateDatabaseTestLabel.Foreground = new SolidColorBrush(Colors.Green);
}
else
{
this .CreateDatabaseTestLabel.Foreground = new SolidColorBrush(Colors.Red);
}
Database.DeleteDatabase(name); // 通过上面 Guid 生成的名称删除数据库
}如上代码,调用 Database.CreateDatabase 是使用它的构造函数 private Database(string databaseName, string password, bool useLazyLoading)参数一:数据库名称,参数二:数据库密码,上面的代码不给密码则为空,参数三:是否允许延迟加载。
-
lihe
帖子 : 28
加入日期 : 2010.09.14 14:17 GMT+8
地点 : 中国
-
判断数据库是否存在如果你创建了一个数据库,那么你就会想看看我们刚才创建的数据库是否存在。 Android 可以通过 DDMS 查看,而此开源类库是使用的 IsolatedStorage 。大家都知道微软是不允许让开发者查看 IsolatedStorage 文件的。 ---“ 虽然有一款工具叫 IsolatedStorage Explorer ,可以查看 IsolatedStorage 文件 ” ,在这里先不谈。要查这个数据库是否己经创建完成,就要使用下面的代码了:/// <summary>
/// 验证数据库是否存在
/// </summary>
private void DatabaseExists()
{
var name = Guid.NewGuid().ToString(); // 使用 Guid 得到一个 name
if (Database.DoesDatabaseExists(name) == false )
{
var db = Database.CreateDatabase(name); // 创建数据库返回一个 DataBase 对象
db.Save(); // 调用 IsolatedStorage 保存
if (Database.DoesDatabaseExists(name) == true ) // 根据名称查询如果存在即返回真
{
this .DatabaseExistsLabel.Foreground = new SolidColorBrush(Colors.Green);
}
else
{
this .DatabaseExistsLabel.Foreground = new SolidColorBrush(Colors.Red);
}
}
else
{
this .DatabaseExistsLabel.Foreground = new SolidColorBrush(Colors.Red);
}
Database.DeleteDatabase(name);// 通过上面 Guid 生成的名称删除数据库
}其中该验证数据库是否存在的代码为:public static bool DoesDatabaseExists( string databaseName)
{
bool returnValue = false ;
using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
{
string [] files = store.GetFileNames();
if (files != null && files.Length > 0 && files[ 0 ] != null )
{
returnValue = (from aFile in files
where aFile == databaseName
select aFile).Any();
}
}
return returnValue;
}代码简单,有写 IsolatedStorage 经验的朋友,相信一看便明白。