设为首页 收藏本站
查看: 1113|回复: 0

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

[复制链接]

尚未签到

发表于 2015-5-10 17:02:10 | 显示全部楼层 |阅读模式
  一、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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-65602-1-1.html 上篇帖子: Windows 7下Windows Live系列产品最小化到托盘 下篇帖子: windows 7 下创建FileStream 时出现 UnauthorizedAccessException
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表