Windows Phone 7 Perst嵌入式数据库的学习

简介:

WP7只有本地存储,自身是不带数据库存储的,所以想要在WP7上使用数据库只能通过使用第三方的嵌入式数据库。Perst 是一个简单,快速,便捷,面向对象适合Java与.NET的数据库,它在嵌入式数据库领域是鼎鼎有名的,并且其代码是开源的,我们可以在它的官方网站上下载该数据库的所有的代码。
官方网站www.mcobject.com/perst_eval


下面是Perst数据库在Windows Phone 7上使用的一些基本的语法的简单总结:

1、创建数据库

Storage storage = StorageFactory.Instance.CreateStorage(); //创建Perst存储Storage实例
storage.Open( "PerstDemoDB.dbs"); // 打开Storage
Database DB = new Database(storage); //使用上面初始化的Storage实例创建数据库


2、创建数据库面向对象的类(作用相当于关系数据库的表)
//创建一个数据库存储的面向对象的类的基类 要继承Perst.Persistent基类
public class User: Perst.Persistent
{
//定义字段
//Perst使用反射来获取对象的值 需要在字段的前面加上[FullTextIndexable]标示
[FullTextIndexable]
public long id; 
[FullTextIndexable]
public string name; 
……

public long Id
{
get { return id; }
set { id= value; }
}
……

public User(long Id, string name)
{
id = id;
name = name;
}

public override void OnLoad()
{
base.OnLoad();
}

//获取数据库对象 一般会将数据库定义在App里面
protected static Database DB
{
get { return ((App)Application.Current).DB; }
}

public override void Deallocate()
{
DB.DeleteRecord(this);//删除记录
}

public void Save()
{
Store();//保存 相当于保存表
DB.UpdateFullTextIndex(this);
}
}

3、添加记录
User user= new User(1, "名字");
DB.AddRecord(user);
DB.Storage.Commit();

4、修改记录
user.Id=2
user.Save();

5、删除记录
user.Deallocate();
DB.Storage.Commit();

6、查询数据库
根据唯一的oid查询记录 oid是Perst数据库为每一个类的对象分配的一个唯一的值
User user= DB.Select<User>("oid = " + this.NavigationContext.QueryString["oid"]).FirstOrDefault();

模糊查询
// 查询所有包含了tbSearch.Text.ToLower()的结果FullTextSearchResult
FullTextSearchResult prefixes = DB.SearchPrefix(tbSearch.Text.ToLower(), 1000, 4000, false);
ObservableCollection<User> searchUsers = new ObservableCollection<User>();
List<FullTextSearchHit> arrayRes = new List<FullTextSearchHit>();
if (prefixes != null) arrayRes.AddRange(prefixes.Hits);
foreach (var hit in arrayRes)
{
if (hit.Document is User)//如果是联系人类型 FullTextSearchHit.Document 查询匹配的文件
{
if (!searchcontacts.Contains((User)hit.Document))
searchcontacts.Add((User)hit.Document);
}
}

7、删除存储的类的所有对象
DB.DropTable(typeof(User));
DB.Storage.Commit();//完成

8、删除数据库

var storage = ((App)App.Current).DB.Storage;//获取在App上定义的数据库存储
storage.Close();//关闭它
using (var store = IsolatedStorageFile.GetUserStoreForApplication())//获取当前应用程序使用的本地存储文件
{
if (store.FileExists("PerstDemoDB.dbs"))//找到数据库的存储文件 perst数据库文件是在本地存储中的
{
store.DeleteFile("PerstDemoDB.dbs");//删除这个数据库的本地存储文件
}
}


本文转自linzheng 51CTO博客,原文链接:http://blog.51cto.com/linzheng/1078624


相关文章
|
11月前
|
关系型数据库 MySQL Linux
MySQL数据库下载安装教程(Windows&Linux)
本文档详细介绍了MySQL的安装步骤,包括安装前的准备工作、下载安装包、Windows和Linux系统下的具体安装流程,以及如何配置MySQL服务、设置环境变量、启动服务和连接数据库等关键操作。
|
12月前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
|
12月前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(下)
本文接续前文,深入讲解了在Windows环境下使用C#和ADO.NET操作南大通用GBase 8s数据库的方法。通过Visual Studio 2022创建项目,添加GBase 8s的DLL引用,并提供了详细的C#代码示例,涵盖数据库连接、表的创建与修改、数据的增删查改等操作,旨在帮助开发者提高数据库管理效率。
|
存储 NoSQL API
.NET NoSQL 嵌入式数据库 LiteDB 使用教程
.NET NoSQL 嵌入式数据库 LiteDB 使用教程~
490 0
|
SQL 关系型数据库 MySQL
Windows服务器的最佳数据库是什么?
【7月更文挑战第20天】Windows服务器的最佳数据库是什么?
282 5
|
Java 测试技术 数据库连接
Spring Boot中的嵌入式数据库使用
Spring Boot中的嵌入式数据库使用
|
Windows
逆向学习Windows篇:通过编写函数处理菜单消息
逆向学习Windows篇:通过编写函数处理菜单消息
132 0
|
安全 API C++
逆向学习Windows篇:C++中多线程的使用和回调函数的实现
逆向学习Windows篇:C++中多线程的使用和回调函数的实现
609 0
|
安全 API Windows
逆向学习Windows篇:文件操作详解
逆向学习Windows篇:文件操作详解
128 0
|
存储 数据安全/隐私保护 Windows
逆向学习Windows篇:进程句柄操作详解
逆向学习Windows篇:进程句柄操作详解
699 0

热门文章

最新文章