Windows Phone 7 Perst数据库的一些常用的类和方法

简介:

一、Perst.Database类
Database是Perst提供数据库类,这个类相当于模拟了关系型数据库。数据库类允许你创建/删除表,添加/删除索引,创建/更新/删除记录,编写和执行查询。当然这些都是通过面

向对象来处理的。
Database(Storage storage); //利用Storage实例创建数据库
Database(Storage storage, bool multithreaded); //是否支持多线程
Database(Storage storage,bool multithreaded,bool autoRegisterTables,FullTextSearchHelper helper); 
autoRegisterTables 当一个新的实例插入数据库的时候自动创建表
Type: Perst.FullText.FullTextSearchHelper 全局索引帮助


Database.Storage 属性 获取与Database关联的Storage
Database.EnableAutoIndices 属性 是否允许自动索引


int Database.CountRecords(Type table)
int Database.CountRecords(Type table,bool forUpdate)
返回表的记录总数 表就是你定义的存储数据的类
如果表正在更新,传入forUpdate参数为true防止死锁

public bool CreateIndex(Type table,string key,bool unique)
返回true表示创建成功 false表示索引已经创建了
table 表的类型
key 表的字段
unique 是否唯一

public bool DropIndex(Type table,string key) //删除索引

public bool CreateTable(Type table) //创建一个表

public bool DropTable(Type table) //删除表

public bool DeleteRecord(Object record)
public bool DeleteRecord(Type table,Object record) //删除记录 record记录的实例

public IEnumerable GetRecords(Type table)
public IEnumerable GetRecords(Type table,bool forUpdate) //返回表的所有记录

public FullTextSearchResult Search(FullTextQuery query,int maxResults,int timeLimit)
public FullTextSearchResult Search(string query,string language,int maxResults,int timeLimit) //查询

public FullTextSearchResult SearchPrefix(string prefix,int maxResults,int timeLimit,bool sort) 
//通过前缀查询 查询所有包含prefix前缀的记录

public IEnumerable Select(Type table,string predicate) 
//相当于sql的select语句 predicate是条件相当于 where后面的语句

public void UpdateKey(Object record,string key,Object value)
public void UpdateKey(Type table,Object record,string key,Object value) //更新一条记录的某个字段
 

二、Perst.Storage数据存储类
Storage storage = StorageFactory.Instance.CreateStorage()创建一个storage的新的实例
storage.Open("PerstDemoDB.dbs"); // Storage通过数据库路径打开数据库

Query CreateQuery() //创建一个查询对象

int GetOid(Object obj) //获取记录对象的唯一Oid值

Object GetProperty(string name) //获取记录对象的某一属性的值
--------------------------------------------------------------------
使用Storage和Database实现数据库数据备份和导入XML

数据备份
Storage db = StorageFactory.Instance.CreateStorage();
db.Open("test.dbs", PagePoolSize); //打开数据库
FileStream stream = new FileStream("test.bck" ,FileMode.Create, FileAccess.Write);
db.Backup(stream); //Database的备份方法
stream.Close();
db.Close();


导出XML
Storage db = StorageFactory.Instance.CreateStorage();
db.Open("test1.dbs", PagePoolSize);

StreamWriter writer = new StreamWriter("test.xml");
db.ExportXML(writer);
writer.Close();
db.Close();
db.Open("test2.dbs", PagePoolSize);
Reader reader = new StreamReader("test.xml");
db.importXML(reader); // //Database的导出XML的方法

reader.Close();
db.Close();
---------------------------------------------------------------------

///////////////////////////////////////////////////////////////////////////////////////////
Perst.Persistent类 Perst数据库里面的表必须要继承这个基类
Persistent.Oid 属性 每一个Persistent对象都会有一个唯一的Oid值
Persistent.Storage 属性 Persistent对象所归于的存储Storage对象
Store() 保存记录
Deallocate() 删除记录

语法如:
using Perst;

public class YourPersistentClass : Persistent {
int x;
String y;
Link links;
...


void doUpdate() { 
x = 1;
y = "Hello World";
links = Storage.CreateLink();
Store(); // save changes in the database
}
}

三、Perst.FullText.FullTextSearchResult类和Perst.FullText.FullTextSearchHit类

这两个类常用于数据库的全文搜索,非常方便语法也很简洁

Perst.FullText.FullTextSearchResult类 全部文本搜索的结果集
public FullTextSearchHit[] Hits 
FullTextSearchResult.Hits 属性返回FullTextSearchHit数组

Perst.FullText.FullTextSearchHit类 是FullTextSearchResult 的结果集的子集元素
public FullTextSearchHit(Storage storage,int oid,float rank)//创建一个FullTextSearchHit
FullTextSearchHit.Document 是数据库的某个表对象的一条记录Object对象
FullTextSearchHit.Rank 排序float类型

四、Perst.CodeGenerator 提供支持Perst的JSQL语法查询的类 
Perst.CodeGenerator 的方法如下
void Predicate(Code code) //根据查询条件查询
Perst.Code

下面的是SQL语句对应的Perst的JSQL语句的写法 个人感觉这个JSQL的语法不好用
------------------------------------------------------------------------------------
SQL查询
SELECT * FROM Car WHERE color IN ('black, 'silver') 
AND mileage < 100000 AND price < 20000 AND (airCondition OR climatControl)
ORDER By price desc, model asc;

CodeGenerator查询
Perst.Query query = db.CreateQuery(typeof(Car));
CodeGenerator code = query.GetCodeGenerator();
code.Predicate(code.And(code.And(code.And(
code.In(code.Field("color"), code.List(code.Literal("black"), code.Literal("silver"))
),
code.Lt(code.Field("mileage"), code.Literal(10000))
),
code.Lt(code.Field("price"),code.Literal(20000))
),
code.Or(code.Field("airCondition"), code.Field("climatControl"))
)
);
code.OrderBy("price", false);
code.OrderBy("model", true);

foreach (Car car in query) 
{
...
}
------------------------------------------------------------------------

sql查询语法
select * from Person where salary > 10000 and age <= 40 order by name ;

使用Perst Database查询语法
foreach (Person p in db.Select(typeof(Person), "salary > 10000 and age <= 40 order by name"))
{
...
}

使用Perst CodeGenerator的语法
Query query = db.CreateQuery(typeof(Person));
CodeGenerator code = query.GetCodeGenerator();
code.Predicate(code.And(code.Gt(code.Field("salary"), code.Literal(10000)),
code.Le(code.Field("age"), code.Literal(40))));
code.OrderBy("name");
foreach (Person p in query) 
{
...
}


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

相关文章
|
1月前
|
SQL 缓存 PHP
PHP技术探究:优化数据库查询效率的实用方法
本文将深入探讨PHP中优化数据库查询效率的实用方法,包括索引优化、SQL语句优化以及缓存机制的应用。通过合理的优化策略和技巧,可以显著提升系统性能,提高用户体验,是PHP开发者不容忽视的重要议题。
|
1月前
|
存储 缓存 NoSQL
利用Redis List实现数据库分页快速查询的有效方法
利用Redis List实现数据库分页快速查询的有效方法
|
3月前
|
设计模式 NoSQL Java
常用的设计模式以及操作Redis、MySQL数据库、各种MQ、数据类型转换的方法
常用的设计模式以及操作Redis、MySQL数据库、各种MQ、数据类型转换的方法
|
1月前
|
SQL 关系型数据库 MySQL
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
101 1
|
1月前
|
Oracle Java 关系型数据库
java实现遍历树形菜单方法——数据库表的创建
java实现遍历树形菜单方法——数据库表的创建
11 0
|
1月前
|
SQL 关系型数据库 数据库连接
描述一下在 Python 中使用数据库的常见方法。
【2月更文挑战第26天】【2月更文挑战第91篇】描述一下在 Python 中使用数据库的常见方法。
|
1月前
|
NoSQL 网络协议 MongoDB
Windows公网远程连接MongoDB数据库【无公网IP】
Windows公网远程连接MongoDB数据库【无公网IP】
|
1月前
|
JavaScript Java 关系型数据库
基于vue的MOBA类游戏攻略分享平台23(程序+数据库+论文)可帮忙远程调试
基于vue的MOBA类游戏攻略分享平台23(程序+数据库+论文)可帮忙远程调试
|
2月前
|
Java 数据库连接 数据库
Windows7 64位 连接Access数据库“未发现数据源名称并且未指定默认驱动程序“的解决办法
Windows7 64位 连接Access数据库“未发现数据源名称并且未指定默认驱动程序“的解决办法
|
2月前
|
关系型数据库 MySQL Linux
MySQL 数据库安装详解(linux系统和windows系统)
MySQL 数据库是一种广泛使用的开源关系数据库管理系统。在 Linux 和 Windows 系统上安装 MySQL 数据库的步骤略有不同。
96 0

热门文章

最新文章