應用XML作為資料庫的快速開發框架

2022-03-03 04:02:59 字數 3229 閱讀 8461

我經常應用c#開發一些小的桌面程式,這些桌面程式往往有以下幾個特點:

程式比較小,開發周期很短。

程式的資料量不大,多數情況下不超過1萬行記錄。

對程式的效能要求不高。

程式併發很少或者基本沒有。

盡量程式部署簡單。

因為c#程式很多情況下都是curd,結合上面的需求,我一直考慮做乙個簡單的框架,以達到快速開發的目的。應用xml序列化(xmlserializer)功能,我開發了乙個簡單符合上面要求的底層框架。

框架思路

我準備用xml檔案作為資料儲存,為了保證資料同步,同時在記憶體中儲存乙份資料,每次操作時,都是操作記憶體中的資料,操作完之後再同步到資料庫中。

另外,為了保證框架的易用性,我把底層實現寫成了乙個泛型類,所有操作類繼承此泛型類。

框架主要包括以下幾個功能:

應用xml檔案作為資料庫,不依賴其他資料庫系統。

對外提供基本的curd功能。

減少配置,做到0配置。

資料會儲存在執行目錄下面的data目錄下,資料檔案可以由開發者指定,也可以採用預設資料檔案。

如何應用框架進行開發呢?我把框架打成了乙個dll檔案,開發專案時,需要引用這個dll。開發者每定義乙個實體類,需要對應定義乙個操作類,此操作類需要繼承我的泛型操作類。

注意:實體類需要有乙個string型別的id,我一般用guid

實體類示例**:

namespace zdash

public string key

public string lang

public byte realcontent

}}

我把操作類寫成了單例模式,操作類示例**:

namespace zdash

public static codebll getinst()

}}

如何應用:

codebll.getinst().insert(entity);
xml檔案的內容

<?xml version="1.0"?>1符號

c#e1

2符號1

c#e1

由上面的例子可以看到,應用此框架進行開發還是非常容易的。

總結框架優點:

快速開發,完全不需要考慮底層

易於部署

框架**比較短小,總共200行左右。

框架缺點:

效率低下

未考慮併發,非執行緒安全

附:框架源**

using system;

using system.collections.generic;

using system.io;

using system.reflection;

using system.xml.serialization;

namespace wisdombud.xmldb

setdbfile = value;

this.readdb();}}

private listentitylist = new list();

private xmlserializerbll()

private void setdbfile()

type type = typeof(t);

if (string.isnullorempty(this.dbfile))

}catch (exception ex)

}public static xmlserializerbllgetinstance()

return instance;

}public void insert(t entity)

public void insertrange(ilistlist)

public system.collections.generic.listselectby(string name, object value)

type t = typeof(t);

foreach (var inst in this.entitylist)}}

}return list;

}public t selectbyid(string id)}}

}return default(t);

}public void updatebyid(t entity)

}this.deletebyid(id);

this.insert(entity);

}public void deletebyid(string id)}}

}finishloop:

this.entitylist.remove(entity);

this.writedb();

}public listselectall()

public void deleteall()

private void writedb()

stream writer = new filestream(this.dbfile, filemode.create, fileaccess.readwrite);

ks.serialize(writer, this.entitylist);

writer.close();

}private void readdb()

else}}

}

using system.collections.generic;

namespace wisdombud.xmldb

set

}private xmlserializerbllbll = xmlserializerbll.getinstance();

public void delete(string id)

public void insert(t entity)

public void insert(listlist)

public system.collections.generic.listselectall()

public void update(string oldid, t entity)

public t select(string id)

public system.collections.generic.listselectby(string name, object value)

public void deleteall()

}}

xml在資料庫中的應用

1。將xml文件儲存為乙個文字塊 create a table to hold the manuals for the games statement s conn.createstatement s.executeupdate create table manuals gameid int,man...

基於XML的資料庫開發 2

本章主要介紹一下xml資料庫中sql語言解析的問題。現在解析sql基本是使用了類似字尾表示式的解析方法,具體如下 比如有乙個sql語言是這樣的 a 1 b 2 如果我們現在將它轉換成具體sql動作如下,則會變成下面的樣子 a 1 b 2 與字尾表示式很相近,主要區別在於 的判斷上。演算法如下 首先規...

在資料庫應用系統中資料庫的開發

在資料庫應用系統中資料庫的開發 乙個成功的資訊管理系統由50 的業務 50 的軟體組成 而50 的軟體又是由25 的程式 25 的資料庫組成。由此可見資料庫在資訊管理系統中佔的重要位置,或許會有人說了 資料庫不就是建幾張表嗎?有那麼重要嗎?如果按照你說的那樣,既然ms已經有了vb 大家都知道vb中自...