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月前
|
存储 监控 安全
数据库多实例的部署与配置方法
【10月更文挑战第23天】数据库多实例的部署和配置需要综合考虑多个因素,包括硬件资源、软件设置、性能优化、安全保障等。通过合理的部署和配置,可以充分发挥多实例的优势,提高数据库系统的运行效率和可靠性。在实际操作中,要不断总结经验,根据实际情况进行调整和优化,以适应不断变化的业务需求。
|
21天前
|
关系型数据库 MySQL Linux
MySQL数据库下载安装教程(Windows&Linux)
本文档详细介绍了MySQL的安装步骤,包括安装前的准备工作、下载安装包、Windows和Linux系统下的具体安装流程,以及如何配置MySQL服务、设置环境变量、启动服务和连接数据库等关键操作。
|
1月前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
54 7
|
28天前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
|
28天前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(下)
本文接续前文,深入讲解了在Windows环境下使用C#和ADO.NET操作南大通用GBase 8s数据库的方法。通过Visual Studio 2022创建项目,添加GBase 8s的DLL引用,并提供了详细的C#代码示例,涵盖数据库连接、表的创建与修改、数据的增删查改等操作,旨在帮助开发者提高数据库管理效率。
|
2月前
|
SQL 关系型数据库 MySQL
Go语言项目高效对接SQL数据库:实践技巧与方法
在Go语言项目中,与SQL数据库进行对接是一项基础且重要的任务
90 11
|
2月前
|
SQL 数据库 数据库管理
数据库SQL函数应用技巧与方法
在数据库管理中,SQL函数是处理和分析数据的强大工具
|
2月前
|
SQL 存储 监控
串口调试助手连接SQL数据库的技巧与方法
串口调试助手是电子工程师和软件开发人员常用的工具,它能够帮助用户进行串口通信的调试和数据分析
|
2月前
|
Java API 数据库
Data jpa 增删改查的方法分别有哪些
Data jpa 增删改查的方法分别有哪些
|
1月前
|
网络安全 Windows
Windows server 2012R2系统安装远程桌面服务后无法多用户同时登录是什么原因?
【11月更文挑战第15天】本文介绍了在Windows Server 2012 R2中遇到的多用户无法同时登录远程桌面的问题及其解决方法,包括许可模式限制、组策略配置问题、远程桌面服务配置错误以及网络和防火墙问题四个方面的原因分析及对应的解决方案。