Windows Phone 7 Perst資料庫的一些常用的類和方法

來源:互聯網
上載者:User

一、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)
     {
         ...
     }

Perst嵌入式資料庫的介紹

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.