自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

開(kāi)源.NET下的XML數(shù)據(jù)庫(kù)介紹及入門

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù)
有時(shí)候嘗試未必是壞事,不斷嘗試新事務(wù),才能發(fā)現(xiàn)新東西,增加閱歷,才能更容易面對(duì)復(fù)雜的情況。今天給大家?guī)?lái)的是一個(gè).NET下開(kāi)源的XML數(shù)據(jù)庫(kù)。比較好用,輕量級(jí),小巧,可以滿足一些特殊的變態(tài)的需求。

 比如我這次遇到的。一個(gè)小得不能小的工具,本來(lái)用sqlite+XCode很快就可以搞定的東東,“領(lǐng)導(dǎo)”說(shuō)非要用XML存儲(chǔ),那好吧。就用XML,雖然.NET操作XML很方便,但很好做。我的***反應(yīng)是找一個(gè)C#操作XML文件的類,應(yīng)該差不多了。沒(méi)想到就發(fā)現(xiàn)了XML數(shù)據(jù)庫(kù)這么個(gè)玩意,試用,初步還是不錯(cuò)的,雖然有些小問(wèn)題,也很久沒(méi)更新了。代碼資料還是老樣子,規(guī)矩看前面的博客說(shuō)明,不在提示了。

XML Database初步介紹

XML Database是一套基于.NET 和 XML技術(shù)開(kāi)發(fā)的數(shù)據(jù)庫(kù)產(chǎn)品,開(kāi)發(fā)者是博客園的陳希章。其定位是面向.NET開(kāi)發(fā)平臺(tái)的、小型的、面向?qū)ο蟮臄?shù)據(jù)庫(kù),比較適合于本地?cái)?shù)據(jù)緩存、嵌入式數(shù)據(jù)庫(kù)應(yīng)用的場(chǎng)景。上次更新日期是2011年了,沒(méi)有仔細(xì)去研究源碼,核心的程序集也才25K,所以夠輕量級(jí)。那說(shuō)說(shuō)其基本特點(diǎn),更新后的版本的說(shuō)明沒(méi)有找到,就看最老的版本的吧:

1.完全基于XML的存儲(chǔ)。數(shù)據(jù)庫(kù)的配置信息和對(duì)象數(shù)據(jù)、索引、日志全部是用XML格式保存的。這樣的出發(fā)點(diǎn)主要是XML數(shù)據(jù)格式很易于閱讀和傳輸,轉(zhuǎn)換。

2.基于文件夾的數(shù)據(jù)存儲(chǔ)。這個(gè)作者曾經(jīng)有些猶豫,有時(shí)候也覺(jué)得沒(méi)必要,但如果關(guān)系復(fù)雜點(diǎn)的對(duì)象,還是有用的。

3.完全基于.NET編寫,結(jié)合了LINQ的語(yǔ)法。這個(gè)數(shù)據(jù)庫(kù)引擎也可以算是一個(gè)所謂的嵌入式的數(shù)據(jù)庫(kù)引擎吧,它是通過(guò)一個(gè)dll提供了全部的功能。目前提供的查詢是基于LINQ to Object的,所有的操作都是面向?qū)ο蟮摹?/p>

4.目前有的功能主要是數(shù)據(jù)庫(kù)的創(chuàng)建、打開(kāi)和關(guān)閉,以及面向?qū)ο蟮脑鰟h查改,簡(jiǎn)單的批處理和事務(wù)控制等。

簡(jiǎn)單入門例子

存儲(chǔ)是面向?qū)ο蟮模瑢?duì)每一條數(shù)據(jù),都會(huì)有一個(gè)GUID編號(hào),可以去看生成的XML文件得知。平時(shí)我們要存儲(chǔ)在數(shù)據(jù)庫(kù)的對(duì)象,一般就是實(shí)體了,那看看我這個(gè)實(shí)體的簡(jiǎn)單結(jié)構(gòu):

  1. /// <summary>人臉數(shù)據(jù)</summary>   
  2.  public class Faces  
  3.  { 
  4.      #region 屬性 
  5.      /// <summary>姓名</summary>        
  6.      public String Name { get; set; }     
  7.      /// <summary>年齡</summary> 
  8.      public Int32 Age { get; set; }            
  9.      /// <summary>性別</summary> 
  10.      public String Sex { get; set; }   
  11.      /// <summary>手機(jī)號(hào)碼</summary>        
  12.      public String Tel { get; set; }    
  13.      /// <summary>圖片位置</summary>       
  14.      public String Position { get; set; } 
  15.      /// <summary>圖像的特征值,不支持存儲(chǔ)數(shù)組類型,要轉(zhuǎn)換才行</summary>       
  16.      public string Eigenvalue { get; set; } 
  17.      #endregion 
  18.  } 

值得注意的是,我試了一下,好像不支持存儲(chǔ)數(shù)組結(jié)構(gòu),所以是數(shù)組的,要手動(dòng)轉(zhuǎn)換一下。比如這個(gè)特征值,是double[]數(shù)組,用的時(shí)候,讀出來(lái),要轉(zhuǎn)換為double[]才能用。格式嘛,自己定。看基本操作:

  1. //數(shù)據(jù)庫(kù)沒(méi)有會(huì)自動(dòng)創(chuàng)建 
  2.    using (XDatabase db = XDatabase.Open(Main.DbName)) 
  3.    {     
  4.        //然后循環(huán)將特征值和圖像對(duì)應(yīng)起來(lái),添加到數(shù)據(jù)庫(kù) 
  5.        for (int i = 0; i < 20; i++) 
  6.        { 
  7.            //添加圖片信息 
  8.            Faces cut = new Faces(); 
  9.            cut.Name = Names[i]; 
  10.            cut.Sex = Sexs[i]; 
  11.            cut.Tel = Teles[i]; 
  12.            cut.Age = Ages[i]; 
  13.            cut.Position = fileNames[i]; 
  14.            //添加特征值 
  15.            cut.Eigenvalue = DoubleArrayToString (MeanB[i]); 
  16.            //保存到數(shù)據(jù)庫(kù) 
  17.            db.Store(cut); 
  18.        } 
  19.    //查詢,結(jié)果是IEnumerable<T>類型,可以用LINQ操作 
  20.        var t = db.Query<Faces>();      
  21.    } 

其實(shí)很簡(jiǎn)單,輕量級(jí)的操作就是保存和查詢,更新,更新的操作很簡(jiǎn)單,和保存一樣,內(nèi)部會(huì)識(shí)別是新增的數(shù)據(jù)還是更新數(shù)據(jù)。查詢的結(jié)果是IEnumerable<T>類型,所有可以很方便的使用LINQ來(lái)得到你所要的結(jié)果。

當(dāng)然還可能有其他的一些功能,比如事務(wù),我的工具太簡(jiǎn)陋,沒(méi)有用上,可以研究下。

說(shuō)明一下,不要也不要說(shuō)功能有限,有時(shí)候我們的需求就這樣,簡(jiǎn)單的可以就行,沒(méi)必要搞那么復(fù)雜。OK,就算拋磚引玉吧,作者后來(lái)的更新也沒(méi)有說(shuō)明,如果使用,可以用Nuget來(lái)獲取***的安裝包,地址看下節(jié)。

相關(guān)資源

開(kāi)源網(wǎng)址:http://xmldatabase.codeplex.com/

作者博客:http://www.cnblogs.com/chenxizhang/

Nuget地址:http://nuget.org/packages/XMLDatabase

原文鏈接:http://www.cnblogs.com/asxinyu/archive/2013/03/25/2980086.html

 

責(zé)任編輯:彭凡 來(lái)源: 博客園
相關(guān)推薦

2011-07-12 10:09:08

XML數(shù)據(jù)庫(kù)服務(wù)器

2012-04-12 09:23:15

達(dá)夢(mèng)數(shù)據(jù)庫(kù)

2009-02-23 15:20:03

SQL Server數(shù)據(jù)庫(kù)ASP.NET

2011-07-26 11:12:05

DBXML數(shù)據(jù)庫(kù)

2017-11-08 09:22:36

數(shù)據(jù)庫(kù)NoSQLArangoDB

2010-09-01 09:14:23

Effiproz

2009-12-21 16:36:08

ADO.Net數(shù)據(jù)庫(kù)

2010-01-12 10:40:58

VB.NET數(shù)據(jù)庫(kù)壓縮

2011-03-29 09:40:31

SQL Server數(shù)據(jù)庫(kù)鏈接

2009-10-28 17:24:19

VB.NET介紹

2010-01-18 19:21:51

VB.NET存取數(shù)據(jù)庫(kù)

2010-06-10 10:57:57

2011-08-18 10:55:55

SQL ServerDATEADD

2011-08-15 14:12:16

SQL ServerDATEDIFF

2010-06-11 13:22:32

2011-05-25 10:56:19

Oracle數(shù)據(jù)庫(kù)Unix環(huán)境優(yōu)化

2009-02-04 17:36:11

ibmdwXML

2013-02-20 14:54:03

C#.NETNDatabase

2011-08-03 15:14:17

Excel XP數(shù)據(jù)庫(kù)功能

2023-09-15 16:03:59

向量數(shù)據(jù)庫(kù)開(kāi)源
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)