2014-10-10 67 views
0

我想在某種數據庫中保存一些細節。 我認爲使用像訪問或MySQL數據庫將是一個矯枉過正。
因此,我一直計劃使用XML文件作爲數據庫。
我的想法是在某種結構來創建一個XML文件,如:在xml文件中管理數據庫

<DB> 
<Player>John</Player> 
<Money>50</Money> 
<Player>James</Player> 
<Money>10</Money> 
</DB> 

然後,這個數據加載到某種類型的集合,有管理它,並覆蓋XML文件。

有沒有更好的方法來實現我想要做的?我認爲我太複雜了。

編輯: 我添加了序列化數據並保存方法:

public static DB LoadFromFile(string path) 
{ 
    FileStream fs = null; 
    DB db = null; 

    try 
    { 
     fs = File.Open(path, FileMode.Open); 
     var serializer = new XmlSerializer(typeof(DB)); 
     db = (DB)serializer.Deserialize(fs); 
    } 
    catch 
    { 

    } 

    if (fs != null) 
    { 
     fs.Close(); 
    } 

    return db; 
} 

public static void SaveToFile(string path, object objData) 
{ 
    var fs = File.Open(path, FileMode.Create); 
    var serializer = new XmlSerializer(objData.GetType()); 

    try 
    { 
     serializer.Serialize(fs, objData); 
    } 
    catch 
    { 

    } 

    fs.Close(); 
} 

當我試圖LoadFromFile的SaveToFile被稱爲後我得到: +的InnerException {」是出乎意料的。「} {System.Exception的} System.InvalidOperationException

+0

您可能會考慮序列化。您可以創建類,爲它們設置屬性,然後將它們序列化爲xml並將它們寫入文件。反之亦然...讀取一個文件,將xml反序列化爲新的類,然後就可以開始了。查看:http://support2.microsoft.com/kb/815813 – 2014-10-10 23:59:47

+0

每當我看到一個應用程序,開發人員說「數據庫會過度殺傷,我只是使用文件」(或其他一些方法) ,開發者已經後悔了! – DavidG 2014-10-11 00:12:28

+0

你也可以使用'DataSet'。有'ReadXml'和'WriteXml'函數可以用來寫入和讀取文件。這可能會使將來更容易遷移到數據庫。您可以定義主鍵和關係。您還可以處理添加,更改和刪除的事件。還有很多其他功能可用,無需數據庫。 http://msdn.microsoft.com/en-us/library/system.data.dataset(v=vs.110).aspx,但如果沒有任何功能對您有用,不妨使用'XmlSerializer'。 – 2014-10-11 00:20:15

回答

2

你或許應該使用XmlSerializer像這樣

public class User 
{ 
    public string Player { get; set; } 
    public string Money{ get; set; } 
} 
public class Database 
{ 
    public List<User> User { get; set; } 
    public static Database LoadFromFile(string path) 
    { 
     var fs = File.Open(path); 
     var serializer = new XmlSerializer(typeof(DataBase)); 
     var db = (Database)serializer.Deserialize(fs); 
     return db; 
    } 
} 

有關更多信息,請參閱http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer(v=vs.110).aspx

+0

我已經添加了一個將XML序列化到文件的方法,但它不起作用。 – Lior 2014-10-11 01:04:57

+0

錯誤消息,代碼等?更新問題或創建一個新的問題 – M4GNV5 2014-10-11 09:09:46

+0

http://stackoverflow.com/questions/26310188/xmlserializer-and-types – Lior 2014-10-11 09:10:09